当前位置: 首页 > article >正文

渗透笔记1

第一天

工具:cs cobalt strike 4.9  / msf kali (自带 Ubuntu)

cs cobalt strike 4.9:server-client

server部署在云服务器上,client分别在各地,与server相连接;连接上后就可以共享上线主机。

对于server主要执行主件是teamserver和TeamServerImage,他们是用Java写的,所以要jdk的依赖,Windows和Ubuntu都需要下载安装,用命令java -version查看是否安装成功

运行server

root@ubuntu:~/cs4.9/Server# ./teamserver 192.168.59.147 oupeng  (IP 密码)
反弹性木马:反向,受害者主动连接入侵者,内网往外网走,所以防火墙对此管理没有严格;如果受害者不知道入侵者的ip地址,那么受害者是连接不到入侵者的。(这就是为什么用反弹性木马和为什么要写ip)

打开client,监听木马:创建一个监听器(设置不常用的端口),方便你知道受害者何时连接的你

案例一:

假设我们是一个红队入侵者,我们需要去攻击某个学校 ,但学校的安全做的不错,没有明显的漏洞,现有的系统接入0信任,需要一个老师或者学生账号
1、用钓鱼邮件并且通过免杀木马让学生或老师中招
2、第一种(等待):利用远程控制木马的键盘监听器去监听等待,如果他输入账号,那么就能得到他的账号和密码 ———— 效率太低
   第二种(主动出击):让他主动写入自己的学号或教师账号以及密码
3、要一个钓鱼网站 ———— 学校的官网(直接将源码另存为)
4、关键问题:如何他去走进你的钓鱼网站 
5、现已将代码部署到自己的网站,但没有学校域名的权限(没有办法让域名解析到自己的服务器上)
6、解决方法:仿造一个相似域名,可取性为0    edu.cn申请不到
    https://www.cdcas-edu.com  成功率较低 
8、现已让对方中木马,所以要做出hosts ———— dns劫持 ———— 劫持dns解析,让其解析到自己的服务器上
9、dns解析流程 ———— 才能知道hosts为什么可以dns劫持
hosts的Windows路径:C:\Windows\System32\drivers\etc\hosts
10、问题:在自己的电脑或者linux服务器上部署一个web应用需要什么组件 ———— web中间件  
web中间件:nginx (apache toimcat weblogic)
12、部署nginx服务,windows可以用小皮面板;要配置虚拟主机才可以让域名解析到本地
虚拟主机是否能够匹配到这个,需要看虚拟主机的配置项
位置:D:\phpstudy_pro\Extensions\Nginx1.15.11\conf\vhosts\0localhost_80.conf
用vscode打开配置(复制粘贴后修改server_name、root),完成后重启小皮的nginx
当别人访问登录后,服务器上就能获取到他的账号和密码,在D:\phpstudy_pro\WWW\服务器名\account.txt中
13、问题
1. dns解析过程 
(1)查询本地 ———— 查询缓存 
(2)本地缓存没有,就到hosts查看是否有域名和ip的对应关系 如果有则返回
(3)都没有,则查本地路由 ————> 查询根域服务器 ————> dns ————> 13个根域服务器地址
(4)查找13台根域服务器
(5)寻找com顶级域
   寻找百度的dns服务器
   最终返回baidu.com的A的对应服务器ip
   迭代查询

Windows和Linux下的dns解析命令:
linux:dig  nslookup
例:xyl@ubuntu:~$ dig +trace www.baidu.com
    xyl@ubuntu:~$ nslookup www.baidu.com

Windows:nslookup ———— nslookup www.baidu.com

2. web中间件的部署和搭建(linux)
搭建LNMP和WNMP
LNMP: linux nginx mysql php
WNMP: Windows nginx(小皮面板) mysql php

也可以docker搭建(过程没那么繁琐)
https://command-not-found.com/ 可以寻找安装包的命令

3 如何配置web中间件的虚拟主机

总结4步:1.中c2(免杀)  2.劫持dns  3.让他登录钓鱼网站 4.拿下他的账号密码 

Ubuntu安装nginx、mysql以及php的部署

nginx:
1、编译安装
# 复制22的链接地址(复制源码),用wget下载
wget https://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz
mv nginx-1.22.1 nginx 改名方便使用
cd nginx

2、安装依赖包
apt-get install gcc
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g zlib1g-dev
apt-get install openssl 
apt-get install libssl-dev

3、编译nginx
# 执行命令
./configure
# 执行make命令
make
# 执行make install命令
make install

4、启动nginx
cd /usr/local/nginx/sbin
./nginx   启动nginx
ps -ef |grep nginx  查看进程
http://192.168.59.147/ 访问网站,查看是否成功,如下图一



php:
1、添加数据源
# 执行三条命令,添加php的源地址,更新,安装
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
apt list |grep php   查看是否有安装包

2、安装php
#​ nginx使用php的话要用到php7.3-fpm,所以要安装php-fpm
sudo apt-get install php7.3 php7.3-mysql php7.3-fpm php7.3-curl php7.3-xml php7.3-gd php7.3-mbstring php-memcached php7.3-zip
# 默认是最高版本
pdate-alternatives --config php    修改版本
php -v   查看当前版本

3、配置php-fpm
find / -name www.conf   用find查找文件
vim /etc/php/7.3/fpm/pool.d/www.conf
# 把监听端口改掉
将;listen = /run/php/php7.3-fpm.sock 改为listen = 127.0.0.1:9000
service php7.3-fpm restart   重启服务

9.启动php-fpm
service php7.3-fpm restart
lsof -i:9000     查看9000端口是否开放  (netstat -lnt | grep 9000)

10、nginx下要有配置文件才能和php-fpm相连接
cd /usr/local/nginx/conf/
vim nginx.conf
将以下内容注释取消,且修改结果如下:
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
# 保存退出
# 重启nginx
root@ubuntu:/usr/local/nginx# cd sbin/
root@ubuntu:/usr/local/nginx/sbin# ./nginx -s reload

# 检测配置是否成功
root@ubuntu:/usr/local/nginx# cd html/
root@ubuntu:/usr/local/nginx/html# vim web.php 
内容如下:
<?php phpinfo(); ?>

http://192.168.59.147/web.php   访问该网站看是否配置成功,结果如图二

mysql:
# 安装mysql
apt-get install mysql-server
# 连接mysql
mysql -uroot -p123

这样有两个问题:1、mysql没有密码限制;2、mysql8.0和php7.3里的mysqli-connect不兼容
mysql -uroot -proot123//..
# 修改密码
mysql> alter user 'root'@'localhost' identified mysql_native_password by '123';


vscode远程登陆Ubuntu,修改靶场文件中的mysql连接密码,与Ubuntu中的一致,
访问网站http://192.168.59.147/sqlilabs,得图三

nginx成功结果(图一):

nginx和php配置成功结果(图二):

图三:

第二天

名词解释:

名词解释

1.POC、EXP、Payload与Shellcode

POC:全称‘Proof of Concept',中文’概念验证’,常指一段漏洞证明的代码。

EXP:全称'Exploit’,中文‘利用',指利用系统漏洞进行攻击的动作。

Payload:中文‘有效载荷’,指成功exploit之后,真正在目标系统执行的代码或指令。

Shellcode:简单翻译'shell代码',是Payload的一种,由于其建立正向/反向shell而得名。

poc就是用来做漏洞测试,不会进一步利用;比如执行某个命令来证明这个漏洞是可以执行的

exp相对于poc就会进一步利用,比如写入webshell网站后门等http://192.168.59.147/web.php

因为比较简单,被称为“一句话木马”

(网站后门起到控制整个网站的作用)

        问题:

        1.当你水平越来越高的时候,你的后门太多了不好管理

        2.后门的操作内容比较繁杂,是否可以有工作进行快捷管理

        方法:三款工具

webshell利用与管理工具:

(1)蚁剑 —— 师承中国菜刀

(2)冰蝎 —— rebeyond 他独创webshell加密机制——webshell

(3)哥斯拉——冰蝎类似

payload:比如webshell是一个脚本,那么他的源码就是payload

例:将web.php文件写成system($_GET['c']);执行命令函数——执行get传参——是一个命令执行漏洞

(php中system是执行外部程序,并且显示输出)

现在传一个id,就是一个poc测试,测试发现里面是有漏洞的,就开始考虑其他三个

如果在网址上执行echo 11111 > webshell.php,结果显示无法执行,因为nginx中起作用的worker权限是nobody,而html文件的权限是root,所以执行不成功,但一般来说nginx、php-fpm和html文件的所属者都会统一,修改权限后则能成功(chown -R  /  nginx.conf)

错误:1、权限问题;2、查看日志logs

shellcode是payload的一种,更多出现在远程控制木马里面(机器码 python/c)

2.几点注意

POC是用来证明漏洞存在的,EXP是用来利用漏洞的,两者通常不是一类,或者说,PoC通常是无害的,Exp通常是有害的,有了
POC,才有EXP。

Payload有很多种,它可以是Shellcode,也可以直接是一段系统命令。同一个Payload可以用于多个漏洞,但每个漏洞都有其自己的
EXP,也就是说不存在通用的EXP。

Shellcode也有很多种,包括正向的,反向的,甚至meterpreter。

Shellcode与Shellshcok不是一个,Shellshock特指14年发现的Shellshock漏洞。


http://www.kler.cn/a/507482.html

相关文章:

  • 镭速大文件传输视频文件预览实现原理
  • JAVA实现五子棋小游戏(附源码)
  • 港科夜闻 | 香港科大与微软亚洲研究院签署战略合作备忘录,推动医学健康教育及科研协作...
  • cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】
  • Docker的入门
  • 项目练习:若依管理系统字典功能-Vue前端部分
  • AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%
  • 深度学习加速性能分析与Roofline Model
  • PHP反序列化
  • 基于微信小程序的校园运动场地预约系统设计与实现
  • LeetCode 771. 宝石与石头
  • STM32 FreeRTOS时间片调度---FreeRTOS任务相关API函数---FreeRTOS时间管理
  • 人工智能领域单词:英文解释
  • LabVIEW串口通信调试与数据接收问题
  • 使用arthas监控诊断java应用
  • vscode accelerate deepspeed配置
  • 强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!
  • 人脸识别SDK(Android)之项目回顾总结
  • 【Ubuntu】如何设置 GRUB 启动器的用户名和密码
  • Unix 与 Linux:操作系统的核心区别
  • 【2024年华为OD机试】(B卷,100分)- 恢复数字序列 (Java JS PythonC/C++)
  • PE文件:节表-添加节
  • 记一次数据库连接 bug
  • RabbitMQ介绍以及基本使用
  • Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集
  • 反转字符串中的单词 II:Swift 实现与详解